Crontab

Содержание

  • 1 Добавление Заданий для Cron в Linux
  • 2 Напоминалка:
  • 3 Примеры временных меток для колонки  :
  • 4 Существует насколько предопределенных значений, которыми можно заменять время выполнения задания :
  • 5 Примеры Crontab

 

Добавление Заданий для Cron в Linux

В Linux мы можем настраивать выполнение регулярных задач с помощью демона crond.

Демон сrond – это сервис, который читает crontabs (таблицы cron-а) и выполняет запланированные задания.

В данной статье описано как планировать выполнение регулярных задач с помощью планировщика cron в Linux, а также показаны формат (синтаксис) задач в crontab и примеры заданий для cron.

Первым делом необходимо убедиться что сервис crond запущен и добавлен в автозагрузку.

# chkconfig --list crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service crond status
crond (pid 3760) is running...

Далее необходимо прописать переменные окружения иначе cron работать не будет:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

Запустите сервис crond если он остановлен и добавьте его в автозагрузку если он еще не там. Добавление Заданий для Cron в Сrontab

Выполните следующую команду для редактирования crontab текущего пользователя :

# crontab -e

Редактировать crontab пользователя username :

# crontab -u username -e

Просмотреть содержимое crontab-а текущего пользователя и пользователя username :

# crontab -l
# crontab -u username -l

По умолчанию, задания для планировщика cron хранятся в директории /var/spool/cron/ Формат Планирования Задач в Сrontab

Каждое запланированное задание описывается одной строкой и определяет время начала выполнения задачи и команду которая будет выполнена.

Для задания времени можно использовать конкретное значение минуты, , дня месяца, месяца и дня недели.

Вместо конкретных значений можно использовать знак ‘*’, который буде означать ‘все’ значения или ‘каждое’ из значений.

Напоминалка:

.---------------- минута (0 - 59)
| .--------------  (0 - 23)
| | .------------ день месяца (1 - 31)
| | | .---------- месяц (1 - 12) ИЛИ jan,feb,mar ...
| | | | .-------- день недели (0 - 6) (Воскресенье=0) ИЛИ sun,mon,tue ...
| | | | |
* * * * * команда для выполнения

Временная метка может быть целым значением, несколькими значениями, диапазоном, дробью или дробным диапазоном.

Примеры временных меток для колонки  :

Значение 	Описание
9 	        целое значение : выполнять в 9am
6,7,10 	несколько значений : выполнять в 6, 7 и 10am
6-9 	        диапазон : выполнять каждый  между 6-9 AM (включительно)
*/2 	        дробь : выполнять каждый 2-ой час, т.е. 0 (полночь), 2am, 4am, 6am, и т.д.
3-12/3 	дробный диапазоном : выполнять каждый 3-ий час между 3am и 12pm, т.е. 3am, 6am, 9am, 12pm

Существует насколько предопределенных значений, которыми можно заменять время выполнения задания :

Значение 	Описание 	                                Эквивалент
@reboot 	выполнять при загрузке операционной системы 	-
@yearly 	выполнять ежегодно в полночь 1-го января 	0 0 1 1 *
@annually 	выполнять ежегодно в полночь 1-го января 	0 0 1 1 *
@monthly 	выполнять ежемесячно в полночь 1-го числа 	0 0 1 * *
@weekly 	выполнять в полночь каждый понедельник 	        0 0 * * 0
@daily          выполнять ежедневно в полночь 	                0 0 * * *
@midnight 	выполнять ежедневно в полночь 	                0 0 * * *
@hourly 	выполнять в начале каждого  	                0 * * * *

Примеры Crontab

Рассписание 	Задание
* * * * * 	echo "Выполнять задание каждую минуту"
*/5 * * * * 	echo "Выполнять задание каждые 5 минут"
*/30 * * * * 	echo "Выполнять задание каждые 30 минут"
0 * * * * 	echo "Выполнять задание каждый час"
0 */3 * * * 	echo "Выполнять задание каждые 3 часа"
0 13 * * * 	echo "Выполнять задание каждый день в 13:00"
30 2 * * * 	echo "Выполнять задание каждый день в 2:30"
0 0 * * * 	echo "Выполнять задание каждый день в полночь"
0 0 * * 0 	echo "Выполнять задание каждое Воскресенье"
0 0 * * 1 	echo "Выполнять задание каждый Понедельник"
0 0 1 * * 	echo "Выполнять задание в первый день каждого месяца"
0 0 1 1 * 	echo "Выполнять задание каждый год первого Января"