Cron
cron — классический демон (компьютерная программа в системах класса UNIX), использующийся для периодического выполнения заданий в определённое время. Регулярные действия описываются инструкциями, помещенными в файлы crontab и в специальные каталоги. Название cron образовано от греческого слова χρόνος (хро́нос) — время (по-английски — chronos). Разработчик cron, Кен Томпсон (англ. Ken Thompson), подтвердил это в частной беседе с Брайаном Керниганом (англ. Brian Kernighan)[источник не указан 1950 дней]. В системах на базе systemd cron фактически замещён встроенным механизмом systemd.timer. Файлы crontab, создаваемые для отдельных пользователей, находятся в каталоге[1] /usr/spool/cron/crontabs/ или /var/spool/cron/tabs/. Редактировать их вручную не рекомендуется, для этого используют команду Основной файл конфигурации cron, # /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
crontabКаждый пользователь системы имеет свой файл заданный crontab, в котором описано, в какое время и какие программы запускать от имени этого пользователя. Для редактирования файла crontab используется специальная одноимённая программа crontab, позволяющая не прерывать процесс cron на время редактирования. Вывести содержимое текущего файла расписания: crontab -l Удаление текущего файла расписания: crontab -r Для редактирования файла crontab вашего пользователя используется команда[2] crontab -e Таблица crontab состоит из 6 колонок, разделяемых пробелами или табуляторами. Первые пять колонок задают время выполнения (минута, час, день, месяц, день недели), в них может находиться число, список чисел, разделённых запятыми, диапазон чисел, разделённых дефисом, символы * * * * * выполняемая команда - - - - - | | | | | | | | | ----- день недели (0—7) (воскресенье = 0 или 7) | | | ------- месяц (1—12) | | --------- день месяца (1—31) | ----------- час (0—23) ------------- минута (0—59) Пример файла crontab: # как обычно, с символа '#' начинаются комментарии
# в качестве командного интерпретатора использовать /bin/sh
SHELL=/bin/sh
# результаты работы отправлять по этому адресу
MAILTO=paul@example.org
# добавить в PATH домашний каталог пользователя
PATH=/bin:/usr/bin:/home/paul/bin
#### Здесь начинаются задания
# выполнять каждый день в 0 часов 5 минут, результат складывать в log/daily
5 0 * * * $HOME/bin/daily.job >> $HOME/log/daily 2>&1
# выполнять 1 числа каждого месяца в 14 часов 15 минут
15 14 1 * * $HOME/bin/monthly
# каждый рабочий день в 22:00
0 22 * * 1-5 echo "Пора домой" | mail -s "Уже 22:00" john
23 */2 * * * echo "Выполняется в 0:23, 2:23, 4:23 и т. д."
5 4 * * sun echo "Выполняется в 4:05 в воскресенье"
0 0 1 1 * echo "С новым годом!"
15 10,13 * * 1,4 echo "Эта надпись выводится в понедельник и четверг в 10:15 и 13:15"
0-59 * * * * echo "Выполняется ежеминутно"
0-59/2 * * * * echo "Выполняется по чётным минутам"
1-59/2 * * * * echo "Выполняется по нечётным минутам"
# каждые 5 минут
*/5 * * * * echo "Прошло пять минут"
# каждое первое воскресенье каждого месяца. -eq 7 это код дня недели, т. е. 1 -> понедельник , 2 -> вторник и т. д.
0 1 1-7 * * [ "$(date '+\%u')" -eq 7 ] && echo "Эта надпись выводится каждое первое воскресенье каждого месяца в 1:00"
Например, следующий код очищает журнал ошибок Apache в одну минуту после полуночи (00:01) каждый день, предполагая, что оболочка по умолчанию для пользователя cron совместима с оболочкой Bourne: 1 0 * * * printf "" > /var/log/apache/error_log
В этом примере программа оболочки с именем export_dump.sh выполняется каждую субботу в 23:45: 45 23 * * 6 /home/oracle/scripts/export_dump.sh
Примечание. В некоторых системах также можно указать */n для запуска через каждый n-й интервал времени. Кроме того, указание нескольких конкретных временных интервалов может быть выполнено с помощью запятых (например, 1,2,3). Строка ниже будет выводить «hello world» в командную строку каждую 5-ю минуту каждого первого, второго и третьего часа (то есть 01:00, 01:05, 01:10, вплоть до 03:55). */5 1,2,3 * * * echo hello world
Особенности
Графический интерфейсДля удобства пользователей во многих системах есть специальные программы графического интерфейса управления cron. Gnome ScheduleДля основанных на Debian дистрибутивов: KcronKcron представляет собой KDE-интерфейс для редактирования конфигурационных файлов cron. Утилита запускается по Alt+F2, в окне редактирования можно указать мышью:
Похожие программы
Примечания
Ссылки
|
Portal di Ensiklopedia Dunia