Перейти к содержимому

Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.

Введение

Шаблон задания для Cron выглядит примерно так:

Минуты(0-59) Часы(0-24) День(1-31) Месяц(1-12) День недели(0-6) Команда

Вот иллюстрация этого же шаблона, которую можно сохранить себе:

Звёздочками обозначены конкретные блоки времени.

Для отображения содержимого crontab-файла текущего пользователя используйте команду:

$ crontab -l

Для редактирования заданий пользователя есть команда:

$ crontab -e

Если эта команда выполняется в первый раз, вам предложат выбрать редактор для Cron:

no crontab for sk - using an empty one

Select an editor. To change later, run 'select-editor'.
 1. /bin/nano 

В этом файле как раз нужно перечислять одну за другой все команды.

Чтобы изменить crontab-файл другого пользователя (например, ostechnix):

$ crontab -u ostechnix -e

Ниже приведены несколько примеров cron-заданий:

Чтобы выполнять команду каждую минуту, задание должно быть такое:
* * * * * 
Похожее задание, только команда будет вызываться каждые пять минут:
*/5 * * * * 
Вызывать команду 4 раза в час (каждые 15 минут):
*/15 * * * * 
Чтобы выполнить команду каждый час в 30 минут, пишем:
30 * * * * 
Т. е. команда будет выполняться не каждые 30 минут, а тогда, когда значение минут будет равно 30 (например, 10:30, 11:30, 12:30 и т. д.).
Значения времени можно комбинировать, перечислив их через запятую. Следующий код будет выполнять команду три раза в час: в 0, 5 и 10 минут.0,5,10 * * * * 
Выполнять команду каждый час будет следующее задание:
0 * * * * 
Выполнение команды каждые два часа:
0 */2 * * * 
Чтобы выполнять команду каждый день (в 00:00):
0 0 * * * 
Выполнение команды каждый день в 03:00:
0 3 * * * 
Выполнение команды каждое воскресенье (sunday):
0 0 * * SUN 
Другой вариант задания, которое будет выполнять команду каждое воскресенье (естественно, тоже в 00:00):
0 0 * * 0 
Выполнение команды каждый день с понедельника по пятницу:
0 0 * * 1-5 
Следующее задание будет выполнять команду каждый месяц, 1-го числа в 00:00:
0 0 1 * * 
Выполнять команду в 16:15 каждого первого числа месяца будет это задание:
15 16 1 * * 
Выполнение команды каждые три месяца:
0 0 1 */3 * 
Выполнение команды в строго определённое время и месяц:
5 0 * 4 * 
Задание будет вызывать команду в начале каждого полугодия (в 00:00 1-го дня):
0 0 1 */6 * 
Выполнение команды каждый год 1-го января в 00:00:
0 0 1 1 * 

Ещё существуют готовые задания:
@reboot — одиночное выполнение команды при загрузке;
@yearly — раз в год;
@annually — тоже раз в год;
@monthly — раз в месяц;
@weekly — один раз в неделю;
@daily — раз в день;
@midnight — тоже раз в день;
@hourly — раз в час.

Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:

@reboot 

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

$ crontab -r

Чтобы узнать о подробностях, есть команда:

$ man crontab

Вышеперечисленного уже должно хватить для базовой работы с Cron и составления заданий.

Синтаксис crontab-генераторов

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

Crontag Generator

crontab-generator.org — сайт, который помогает быстро сгенерировать crotab-выражения. Принцип такой: нужно ввести все необходимые данные в формы и нажать кнопку «Generate Crontab Line» внизу страницы.

Опубликовано вLinux

Ваш комментарий будет первым

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

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