Crond

Материал из sysadm
Перейти к навигации Перейти к поиску

Базовая конфигурация

Список заданий текущего пользователя

crontab -l

Изменение заданий текущего пользователя

crontab -e

Расположение файлов заданий

/var/spool/cron/<username>


Формат записи задания

# 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 включаются в конфигурацию cron, при этом команда crontab -l не отображает эти задачи.

Пример:

[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