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:
Установка задания через 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