В этой статье будет объяснено планирование задач и запуск скриптов через регулярные промежутки времени с использованием заданий cron.
Что такое Cron?
Cron - это программа планирования задач, которая работает в фоновом режиме как процесс. Его можно использовать для периодического выполнения определенных заданий, которые запланированы с использованием предопределенного набора правил. Cron предустановлен в большинстве дистрибутивов Linux или доступен в репозиториях для установки вручную.
Пресеты Cron
Cron в Ubuntu поставляется с набором предопределенных планировщиков. Вы можете проверить их, выполнив команду ниже:
$ ls / etc / cron.*Обычно это папки «/ etc / cron.ежечасно »,« / etc / cron.ежедневно »,« / etc / cron.ежемесячно »и« / etc / cron.еженедельно ».
Просто поместите желаемые сценарии в одну из этих папок, чтобы запускать автоматические задачи ежечасно, ежедневно, ежемесячно или еженедельно.
Обратите внимание, что cron по умолчанию использует оболочку «/ bin / sh». Если вы хотите использовать «/ bin / bash» в качестве оболочки в сценариях cron, вы должны использовать «!# / bin / bash »в верхней части файла сценария или определите оболочку как переменную« SHELL = / bin / bash »в первой строке запланированного сценария bash. Переопределение переменной среды «SHELL» также работает для редактора crontab, как описано ниже.
Не все переменные системной среды могут быть доступны для заданий 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: задание выполняется каждый день
- @weekly: работа выполняется раз в неделю
- @monthly: задание выполняется раз в месяц
- @yearly / @anually: работа выполняется один раз в год
- @reboot: задание запускается один раз при каждой перезагрузке / входе в систему
Запись crontab ниже будет делать снимок экрана один раз при каждой перезагрузке:
@reboot scrotВы можете заменить «@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 tester здесь попытка.
Заключение
Запуск заданий cron - отличный способ автоматизировать повторяющиеся задачи, особенно на серверах. Инструмент чрезвычайно мощный и настраиваемый. Однако важно убедиться, что ваше определение планировщика работает правильно, особенно если есть критически важные задачи.