Как добавить задание в планировщик cron в Linux/UNIX

Как добавить задание в планировщик cron в Linux/UNIX

Введение

Cron используется для планирования задач, которые будут выполняться периодически. Вы можете настроить команды или сценарии, которые будут повторяться в заданное время. Cron — один из самых полезных инструментов в Linux или UNIX. Служба(daemon) cron работает в фоновом режиме и постоянно проверяет файл /etc/crontab и каталог /etc/cron.*/. Он также проверяет каталог /var/spool/cron/.

 

Команда Crontab

Crontab — это команда, используемая для установки, удаления или вывода файла конфигурации cron, используемого для управления демоном cron. Каждый пользователь может иметь свой собственный файл задач crontab, и хотя эти файлы хранятся в /var/spool/cron/crontabs, они не предназначены для прямого редактирования. Вам нужно использовать команду crontab для редактирования или настройки ваших собственных заданий cron.

 

Типы файлов конфигурации cron

Существуют различные типы файлов конфигурации:

Системный Сrontab: Обычно используется системными службами и критическими заданиями, требующими привилегий root доступа. Шестое поле (см. ниже описание поля) — это имя пользователя которое по умолчанию присвоено команде. Это дает системе возможность запускать команды от разных пользователей.

Пользовательский crontab: Пользователь может установить свои собственные задания cron, используя команду crontab. Шестое поле — это команда для запуска, и все команды будут выполняться от пользователя, который задал их в своем собственном crontab.

 

Как установить, создать или отредактировать собственные задания cron?

Чтобы отредактировать файл crontab, введите следующую команду в командной строке оболочки Unix / Linux:

$ crontab -e

 

Синтаксис crontab (описание полей)

Синтаксис:

1 2 3 4 5 /path/to/command arg1 arg2

 

ИЛИ

1 2 3 4 5 /root/ntp_sync.sh

 

Где цифры обозначают:

1: Минуты (0-59)
2: Часы (0-23)
3: День (0-31)
4: Месяц (0-12 [12 == Декабрь])
5: День недели (0-7 [7 или 0 == sunday])
/path/to/command — имя скрипта или команды для выполнения по расписанию

 

Легко запоминаемый формат:

* * * * * Команда, которая будет выполнена
- - - - -
| | | | |
| | | | - День недели (0 - 7) (воскресенье = 0 или 7)
| | | --- Месяц (1 - 12)
| | --- День месяца (1 - 31)
| ---- Час (0 - 23)
----- Минута (0 - 59)

 

Пример

# выполнять скрипт backupscript каждые 5 минут #
*/5 * * * * /root/backupscript.sh

# выполнять скрипт backupscript каждый день в час ночи #
0 1 * * * /root/backupscript.sh

# выполнять скрипт каждый месяц первого числа в три часа ночи пятнадцать минут #
15 3 1 * * /root/backupscript.sh

 

Как использовать операторы?

Оператор позволяет указать несколько значений в поле. Существует три оператора:

Звездочка (*): этот оператор задает все возможные значения для поля. Например, звездочка в поле «Часы» будет эквивалентна каждому часу, а звездочка в поле месяца будет эквивалентна каждому месяцу и т.д.

Запятая (,): Этот оператор задает список значений, например: «1,5,10,15,20,25».

Тире (-): Этот оператор задает диапазон значений, например: «5-15» дней, что эквивалентно набору «5,6,7,8,9 … …, 13,14,15», при использования оператора «Запятая».

Слеш (/): этот оператор задает значение шага, например: «0-23 /» можно использовать в поле часов, чтобы указывать выполнение команды каждый час. Шаги также разрешены после звездочки, поэтому, если вы хотите выполнять что-то каждые два часа, просто используйте «*/2».

Используйте специальную строку, чтобы сэкономить время
Вместо первых пяти полей вы можете использовать любую из восьми специальных строк. Это не только сэкономит ваше время, но и улучшит читаемость.

Специальная строка Значение
@reboot Запускается только один раз при запуске.
@yearly Запускается раз в год, «0 0 1 1 *».
@annually Такое же, как у @yearly
@monthly Запускается раз в месяц, «0 0 1 * *».
@weekly Выполняется раз в неделю, «0 0 * * 0».
@daily Выполняется один раз в день, «0 0 * * *».
@midnight Такое же, как у @daily.
@hourly Запускается один раз в час, «0 * * * *».

Пример:

# Запуск команды ntpdate каждый час #
@hourly /path/to/ntpdate

 

Подробнее о файле /etc/crontab и /etc/cron.d/*

/etc/crontab — это файл crontab системы. Обычно используется только пользователем root или для настройки системных задач. Обычные пользователи должны использовать команду crontab для установки и редактирования своих заданий. /var/spool/cron/ или /var/cron/tabs/ — это каталог для личных файлов пользователя crontab.

Типичные записи файла /etc/crontab:

SHELL = /bin/bash
PATH = /sbin:/bin:/usr/sbin:/usr/bin
MAILTO = root
HOME = /
# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

 

Первым делом необходимо определить среду. Если указатель оболочки упущен, cron будет использовать значение по умолчанию, которое равно sh. Если переменная PATH не указана, расположение файлов будет абсолютным. Если перемененная HOME упущенная, cron будет использовать домашний каталог.

Кроме того, cron считывает файлы в каталоге /etc/cron.d/. Обычно это файлы демона системы, такие как sa-update или sysstat. В качестве пользователя root, для настройки заданий cron, вы можете использовать каталоги которые указаны ниже. Здесь вы можете напрямую запускать свои скрипты. Команда run-parts запускает скрипты или программы в каталоге через /etc/crontab файл:

Каталог Описание
/etc/cron.d/ Поместите в эту директиву все скрипты и вызовите их из файла /etc/crontab
/etc/cron.daily/ Запуск всех скриптов один раз в день
/etc/cron.hourly/ Запуск всех скриптов один раз в час
/etc/cron.monthly/ Запуск всех скриптов один раз в месяц
/etc/cron.weekly/ Запуск всех скриптов один раз в неделю

 

Сохранение списка заданий в файл

# crontab -l > /path/to/file
# crontab -u user -l > /path/to/file

 

Спасибо за уделенное время на прочтение статьи!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *