Тази статия ще обясни задачите за планиране и изпълнението на скриптове на редовни интервали, използвайки задания cron.
Какво е Cron?
Cron е програма за планиране на задачи, която работи във фонов режим като процес. Той може да се използва за периодично изпълнение на определени задания, които са планирани, използвайки предварително зададения набор от правила. Cron се предлага предварително инсталиран на повечето дистрибуции на Linux или е достъпен в хранилищата, за да бъде инсталиран ръчно.
Cron Presets
Cron на Ubuntu се предлага с набор от предварително дефинирани програмисти. Можете да ги проверите, като изпълните командата по-долу:
$ ls / etc / cron.*Обикновено тези папки са „/ etc / cron.почасово ”,“ / etc / cron.всеки ден ”,“ / etc / cron.месечно “и„ / etc / cron.седмично ”.
Просто поставете желаните скриптове в една от тези папки, за да стартирате автоматизирани задачи на час, ежедневно, месечно или седмично.
Имайте предвид, че cron използва черупката „/ bin / sh“ по подразбиране. Ако искате да използвате “/ bin / bash” като черупка в cron скриптове, трябва да използвате “!# / bin / bash ”hashbang в горната част на файла на скрипта или дефинирайте черупката като променлива„ SHELL = / bin / bash ”в първия ред в баш скрипт. Заменянето на променливата на околната среда “SHELL” също работи за crontab editor, обяснен по-долу.
Не всички променливи на системната среда могат да бъдат изложени на задачите cron. Така че обикновено е добра идея да дефинирате ръчно важни променливи на средата в скрипт, насрочен от cron.
Crontab
Crontab ви позволява да дефинирате свои собствени планирани задачи. Можете да го използвате, за да конфигурирате cron графици, различни от четирите стандартни cron пресета, обяснени по-горе.
За да зададете планирана задача в crontab, първо стартирайте редактора на crontab, като използвате командата по-долу:
$ crontab -eСега в края на файла можете да добавите запис в следния формат:
минута час ден месец делничен ден / пълен / път / към / скрипт.шКъдето:
- минута: всяка стойност в диапазона от 0 до 59
- час: всяка стойност в диапазона от 0 до 23, 0 е полунощ
- ден: всяка стойност в диапазона от 1 до 31
- месец: всяка стойност в диапазона от 1 до 12
- делничен ден: всяка стойност в диапазона от 0 до 6, като 0 е неделя
Записът crontab по-долу ще направи екранна снимка на вашия работен плот и ще го съхрани в домашната ви директория веднъж в 15:13 часа на 2 март плюс всеки вторник през март в 15:13 часа.
13 15 2 3 2 скротЗа да изброите всички записи в crontab, използвайте командата по-долу:
$ crontab -lОще примери
Задачите на Cron могат да бъдат най-добре обяснени чрез примери, така че по-долу са някои примери, които периодично ще правят снимки на екрана на вашия работен плот и ще ги съхраняват в домашната папка.
Освен петте променливи за планиране, cron използва и специален низ за планиране на задания. Тези низове са:
- @hourly: заданието се изпълнява на всеки час
- @daily / @midnight: заданието се изпълнява всеки ден
- @ седмично: работата се изпълнява веднъж седмично
- @monthly: работата се изпълнява веднъж месечно
- @yearly / @anually: работата се изпълнява веднъж годишно
- @reboot: заданието се изпълнява веднъж при всяко рестартиране / влизане
Записът crontab по-долу ще прави екранна снимка веднъж при всяко рестартиране:
@ рестартиране на скротМожете да замените “@reboot” с други специални низове, споменати по-горе.
Използването на звездичка или заместващ символ на която и да е от петте променливи ще повтори задачата за всички нови екземпляри на тази променлива. Текстът по-долу ще прави екранна снимка всяка минута:
* * * * * СкротВсеки час:
0 * * * * скротВсеки ден в 18:00 часа:
0 18 * * * скротВсеки месец на 6-ти в 18:00 часа:
0 18 6 * * скротИзползвайте „/“, за да стартирате скрипт с фиксиран периодичен интервал от 30 минути (изпълнява се на всеки 30 минути):
* / 30 * * * * скротМожете да използвате променливи, разделени със запетая, за да дефинирате повторяемото изпълнение на скрипта на редовни интервали. Примерът по-долу ще направи екранна снимка на вашия работен плот на всяка 1-ва, 4-та и 5-та минута от нов час.
1,4,5 * * * * скротПроверка на записите в Crontab
Дефинирането на записите в crontab може да бъде сложно, но отстраняването на грешки или проверката дали те работят при правилни времеви марки е още по-сложно. Единият вариант е да се използва виртуална машина и да се регистрират времеви клейма на скрипт, изпълняващ се периодично в cron работа, като се включва нещо като команда „date“ и се пренасочва изходът към текстов файл. По-доброто решение обаче е да се използва една от многобройните онлайн услуги за тестване на работни места, достъпни в мрежата. Препоръчвам да предоставите уебсайт за тестване на cron тук опит.
Заключение
Изпълнението на задания cron е отличен начин за автоматизиране на повтарящи се задачи, особено на сървъри. Инструментът е изключително мощен и персонализиран. Важно е обаче да се уверите, че дефиницията на вашия планировщик работи правилно, особено ако има критични задачи.