Crond
Базовая конфигурация
Список заданий хоста
# здесь расписание задается на уровне хоста cat /etc/crontab ls /etc/crontab.d # если crond запускается в кластерном режиме, то для разных узлов кластера можно задать разные расписания cat /var/spool/cron/$(hostname) # поскольку эти файлы не связаны с конкретным пользователем их формат немного отличается # добавляется дополнительное поле "пользователь" перед запуском команды
Список заданий текущего или заданного пользователя
crontab -l [-u <username>] # не выводит заданий, определенных на уровне хоста для текущего или заданного пользователя # идентично команде cat /var/spool/cron/<username>
Изменение заданий текущего или заданного пользователя
crontab -e [-u <username>] # открывает в редакторе файл /var/spool/cron/<username> # и выполняет проверки при сохранении изменений
Расположение файлов заданий пользователей и хостов кластера
/var/spool/cron/
Формат записи задания
# m - minutes # h - hours # dom - day of month # mon - month # dow - day of week m h dom mon dow command
Ключевые слова
@reboot Выполнение задачи при запуске системы @yearly @annually эквивалент: 0 0 1 1 * @monthly эквивалент: 0 0 1 * * @weekly эквивалент: 0 0 * * 0 @daily @midnight Эквивалент: 0 0 * * * @hourly Эквивалент: 0 * * * *
Примеры
# запускать задание каждые 5 минут с 9 до 18 */5 9-18 * * * command # запускать задание в 10:00 и 15:00 0 10,15 * * * command # запуск при старте системы @reboot command
Ограничение доступа
Доступ пользователей к crontab определяется файлами
/etc/cron.deny /etc/cron.allow
Если в файле есть строка с именем пользователя, то он включен в соответствующий список.
Если файл /etc/cron.allow
не существует, то разрешено всем, иначе разрешено только тем кто включен в этот файл.
Если оба файла не существуют, то разрешено только с привилегиями суперпользователя.
Системные задания
Как описано выше каталог /etc/cron.d
содержит файлы расписаний, определяемые на уровне хоста.
Данный каталог содержит ряд стандартных файлов, для системных заданий, в том числе запуск подсистемы anacron.
[root@myhost]# ls -l /etc/cron.d
total 8 -rw-r--r--. 1 root root 128 Jun 9 2019 0hourly -rw-------. 1 root root 235 Apr 1 2020 sysstat
[root@myhost]# cat /etc/cron.d/0hourly
# Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root 01 * * * * root run-parts /etc/cron.hourly
[root@myhost]# ls -l /etc/cron.hourly
-rwxr-xr-x. 1 root root 392 Jun 9 2019 0anacron
[root@myhost]# cat /etc/cron.hourly/0anacron
#!/bin/sh # Check whether 0anacron was run today already if test -r /var/spool/anacron/cron.daily; then day=`cat /var/spool/anacron/cron.daily` fi if [ `date +%Y%m%d` = "$day" ]; then exit 0; fi # Do not run jobs when on battery power if test -x /usr/bin/on_ac_power; then /usr/bin/on_ac_power >/dev/null 2>&1 if test $? -eq 1; then exit 0 fi fi /usr/sbin/anacron -s
[root@myhost]# cat /etc/cron.d/sysstat # Run system activity accounting tool every 10 minutes */10 * * * * root /usr/lib64/sa/sa1 1 1 # 0 * * * * root /usr/lib64/sa/sa1 600 6 & # Generate a daily summary of process accounting at 23:53 53 23 * * * root /usr/lib64/sa/sa2 -A
anacron
# каталог заданий выполняющихся каждый час, определено через /etc/cron.d/0hourly /etc/cron.hourly
anacron запускается через скрипт /etc/cron.hourly/0anacron
Файл конфигурации /etc/anacrontab
, определяет каталоги для ежедневных, еженедельных и ежемесячных заданий
#period in days delay in minutes job-identifier command 1 5 cron.daily nice run-parts /etc/cron.daily 7 25 cron.weekly nice run-parts /etc/cron.weekly @monthly 45 cron.monthly nice run-parts /etc/cron.monthly