Планировщик заданий Cron
CRON - процесс, планировщик заданий. Необходим для выполнения определенных команд в заданное время в автоматическом режиме - от ротации файлов до запуска или остановки различных программ. Выполняет задание от любого заданного пользователя. Прост в настройке и минимален в плане использования системных ресурсов.
Управлять им можно как через терминал, так и через webmin.
Задание команд и времени в cron
Для того, чтобы просмотреть задания в терминале, необходимо указать команду:
crontab -l
Если необходимо добавить или удалить задание, нужно зайти в режиме редактирования с помощью команды:
crontab -e
и указать выполнение нужных действий с таком формате:
* * * * * выполняемая команда - - - - - | | | | | | | | | ----- Дни недели (0 - 7) (Воскресенье =0 или =7) | | | ------- Месяцы (1 - 12) | | --------- Дни (1 - 31) | ----------- Часы (0 - 23) ------------- Минуты (0 - 59)
Примеры использования cron
0 2 * * * /bin/sh /home/user/file
Выполнение скрипта /home/user/file в 2 часа 0 минут ежедневно, ежемесячно и в любой день недели.
0/15 * * * * /bin/sh /home/user/file
Выполнение скрипта /home/user/file через каждые 15 минут ежедневно, ежемесячно и в любой день недели.
0 6-22 * * * /bin/sh /home/user/file
Выполнение скрипта /home/user/file через каждый час с 6.00 до 22.00 ежедневно, ежемесячно и в любой день недели.
0 0/2 * * * /bin/sh /home/user/file
Выполнение скрипта /home/user/file через каждые 2 часа 0 минут ежедневно, ежемесячно и в любой день недели.
MAILTO=mail@example.com 0 2 * * * /bin/sh /home/user/file
Выполнение скрипта /home/user/file в 2 часа 0 минут ежедневно, ежемесячно и в любой день недели c отправкой отчета на электронный адрес mail@example.com.
Кроме даты можно использовать ряд специальных строк:
@reboot - выполнять команду при перезагрузке @yearly или @annually - выполнять 1 января, аналогично записи: "0 0 1 1 * " @monthly - выполнять 1 числа каждого месяца, аналогично "0 0 1 * * " @weekly - выполнять каждое воскресенье, равносильно "0 0 * * 0" @daily или @midnight - ежедневно в полночь,"0 0 * * * " @hourly - раз в час, "0 * * * * "
Периодическая отправка текста из файла с помощью cron и mail
Небольшое дополнение, т.к. данная информация нередко бывает нужна. Итак, задача: kаждые 2 часа отправлять текст из файла на определенную почту.
0 0/2 * * * cat text | mail -s subject post@example.com
В данном случае текст из файла text будет отправлен письмом на почту post@example.com с темой subject