FreeBSD - сron - планировщик задач

Материал из Wiki - Iphoster - the best ever hosting and support. 2005 - 2024
Перейти к:навигация, поиск

с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