Планировщик заданий 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