Создание заданий для cron

Cron — системный планировщик задач в ОС Linux. Существует два способа работы с планировщиком cron.

 

1) Работа с планировщиком cron с помощью команды crontab

Просмотр задач cron для текущего пользователя:

crontab -l

Просмотр задач конкретного пользователя (из под root):

crontab -u -l

Редактирование заданий cron для текущего пользователя (в системном редакторе по-умолчанию):

crontab -e

Удаление всех заданий cron для текущего пользователя:

crontab -r

 

Формат файла заданий для планировщика cron:

1 2 3 4 5 К

Где, поля означают следующее:

1: Минуты (0-59)
2: Часы (0-23)
3: День (0-31)
4: Месяц (1-12)
5: День недели (0-7, 7 или 0 — воскресение. Можно использовать обозначения дней — )
К: команда или путь к скрипту для выполнения по расписанию

Поля разделяются пробелами или табуляцией, комментарии начинаются с символа #

Примеры:

# выполнять каждый день в 0 часов 5 минут, результат дописывать в файл /tmp/data.log

5 0 * * * /bin/date >> /tmp/data.log

# выполнять 1 числа каждого месяца в 22 часа 15 минут

15 22 1 * * /root/scripts/start_task_1208.sh

# каждый рабочий день в 18:30

0 23 * * 1-5 echo «Пора домой» | mail -s «Уведомление об окончании рабочего дня» john

# Выполняется в 0:45, 2:45, 4:45 и т. д.

45 */2 * * * echo «45 минут в чётный час»

# Выполняется в 12:05 в воскресенье

5 12 * * sun echo «Пора вставать в 12:05»

# С новым годом!

0 0 1 1 * echo «С новым годом!»

# каждые 5 минут

*/5 * * * * echo «Прошло пять минут»

 

Запуск заданий cron чаще, чем раз в минуту

Минимальный интервал запуска заданий в cron — это одна минута.
При необходимости запускать задания чаще, чем раз в минуту можно использовать следующий приём —
создать несколько заданий с запуском раз в минуту, но с дополнительными задержками.

Пример:
*/1 * * * * /home/valery/script.sh # без задержки
*/1 * * * * /bin/sleep 20; /home/valery/script.sh # с задержкой 20 сек
*/1 * * * * /bin/sleep 40; /home/valery/script.sh # с задержкой 40 сек

В приведенном примере получаем запуск скрипта /home/valery/script.sh с интервалом раз в 20 секунд.

 

Сайт где можно прочитать, как будет работать Ваше задание cron:

https://crontab.guru/

 

Установка задания через crontab из скриптов:

Если выполнить команду:

( crontab -l | grep -v -F "script" ; echo "*/1 * * * * /root/script" ) | crontab -

удалиться старое задание в cron с подстрокой script и создастся новое

 

2) Работа с планировщиком cron с помощью специальных файлов crontab

Существуют специальные каталоги откуда cron берет задачи на выполнение.
Сюда можно разместить файлы с заданиями или ссылки на файлы расположенные в других местах.

Системные задания:
/etc/cron.d — каталог для системных и административных crontab файлов
/etc/cron.daily — ежедневные задачи
/etc/cron.weekly — еженедельные
/etc/cron.monthly — ежемесячные
/etc/crontab — файл для системных и административных задач

Пользовательские задания:
/var/spool/cron — пользовательские crontab файлы (RedHat, CentOS)
/var/spool/cron/crontabs — пользовательские crontab файлы (Debian, Ubuntu)
/var/spool/cron/tabs — пользовательские crontab файлы (SUSE)

Имя файла пользовательских заданий должно соответствовать имени пользователя (как оно записано в файле /etc/passwd).

Например:

/var/spool/cron/crontabs/www-data

После размещения своего файла с заданиями для cron — службу необходимо перезапустить.

systemctl restart cron