FreeBSD - сron - планировщик задач
сron - планировщик задач
cron - системный планировщик, применяемый для многократного выполнения заданий в указанные периоды времени.
cron - даемон, т.е работает в фоновом режиме.
Системный конфигурационный файл:
/etc/crontab
Пользовательские конфигурационные файлы хранятся в каталоге:
/var/cron/tabs/
crontab - утилита для модифицирования инструкций для cron.
Часть системного cron файла:
% head -n 10 /etc/crontab # /etc/crontab - root's crontab for FreeBSD # # $FreeBSD: src/etc/crontab,v 1.33.2.1 2009/08/03 08:13:06 kensmith Exp $ # SHELL=/bin/sh PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin # #minute hour mday month wday who command # */5 * * * * root /usr/libexec/atrun
Структура системного crontab файла:
Запись - 7 полей 1 - минуты (0-59) 2 - часы (0-23) 3 - день месяца(1-31) 4 - месяц (1-12) 5 - день недели (0-7, 0 и 7 означает воскресенье) 6 - пользователь от которого запускается команда 7 - команда
, - задание списка значений - - промежуток времени * - каждый день, каждую неделю # - комментарий
Вместо пяти первых полей может использоваться одна из восьми комбинаций:
@reboot Run once, at startup. @yearly Run once a year, "0 0 1 1 *". @annually (same as @yearly) @monthly Run once a month, "0 0 1 * *". @weekly Run once a week, "0 0 * * 0". @daily Run once a day, "0 0 * * *". @midnight (same as @daily) @hourly Run once an hour, "0 * * * *".
Переменная PATH - путь к исполняемым файлам, позволяет не писать полный путь
Переменная SHELL - оболочка по умолчанию для выполнения программ
У каждого пользователя может быть свой crontab файл. Отличие от системного: отсутствие 6 поля, т.к. все программы выполняются от имени пользователя.
cron.deny, cron.allow - файлы для root, которые запрещают или разрешают пользователям использовать crontab
Просмотр crontab файла:
% crontab -l
Бэкап crontab файла:
% crontab -l > ~/backupcron
Удаление crontab файла:
% crontab -r
Восстановление crontab файла:
% crontab ~/backupcron
Редактирование crontab файла с помощью редактора, определенного в $EDITOR:
% crontab -e
Создать crontab файл для пользователя gx1:
% crontab -u gx1 -e
Примеры Запуск file.sh каждые 11 минут
*/11 * * * * root /usr/file.sh
Запуск file.sh каждые 30 минут с 17:00 по 23:00
0,30 17-21 * * * root /usr/libexec/file.sh
Выполняем update.sh каждую минуту, результат и ошибки шлем в /dev/null
*/1 * * * * gx1 /home/update.sh > /dev/null 2>&1
Выполнять задание в 0:30, 2:30, 4:30 - с интервалов в 2 часа:
30 */2 * * * /bin/test.sh