Руководство для начинающих по использованию Cron для планирования задач в Linux

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

В некоторых дистрибутивах Linux, таких как Arch Linux, cron не устанавливается по умолчанию, потому что он использует systemd в качестве альтернативы cron. Кроме того, существует множество реализаций Cron, каждая со своим собственным способом редактирования / планирования заданий Cron. В этом руководстве мы сосредоточимся на cronie, который является настройкой по умолчанию в большинстве дистрибутивов Linux, таких как Ubuntu.

Руководство для начинающих по использованию Cron для планирования задач в Linux - Linux

Просмотреть записи для cr

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

crontab -l
Руководство для начинающих по использованию Cron для планирования задач в Linux - Linux

Вы также можете просмотреть запланированные задачи для учетной записи root с помощью sudo.

sudo crontab -l

Редактировать записи cron

Если вы никогда не настраивали задание cron, при просмотре этого файла будет отображаться пустой файл или файл с комментариями. Чтобы добавить запись, вам нужно будет открыть файл crontab с опцией -e.

crontab -e

Записи будут следовать кронтаб Всегда одна и та же структура, позволяющая проверять записи на любом устройстве, а также создавать их программно.

Базовый синтаксис определения записи crontab:

m h d mon dow command

m = минуты от 0 до 59

h = час от 0 до 23

d = день месяца от 1 до 31

понедельник = месяц от 1 до 12

Доу = День недели от 0 до 6. Ноль в воскресенье.

Command = команда для запуска.

Например, вам нужно регулярно запускать команду, чтобы проверять, работает ли сервер mysql нормально или нет. Чтобы команда запускалась ежечасно, используйте следующий синтаксис:

0 * * * * mysqlcheck --all-databases --check-only-changed --silent

Это означает, что он будет работать каждый час. Если вы просто хотите, чтобы он запускался в 1.42 AM каждый день, команда будет выглядеть так:

42 1 * * * mysqlcheck --all-databases --check-only-changed --silent

Кроме того, запятые могут использоваться для нескольких элементов (например, 1), а дефисы могут использоваться для диапазонов. Специальное использование звездочки вместо элемента в выражении указывает, какой элемент запускать для всех значений поля. (Звездочка появится в поле «Час» для запуска каждый час от 3 до 5.) Хэштег (#) в строке указывает на комментарий (что означает, что строка кода не будет выполнена).

Наконец, косая черта указывает значение шага. Например, каждые пять минут будут вводиться как * / 5 (с момента сохранения crontab и создания задания cron). Если вы используете только «5», запись будет воспроизводиться только на пятиминутной отметке.

Например это:

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent

34: минуты работы от 0 до 59

3: час, от 0 до 23

*: Две средние звезды обозначают каждый день (от 1 до 31) и каждый месяц (от 1 до 12).

0: Последний ноль относится к воскресенью.

Эта задача будет запускаться в 3:34 каждый месяц, каждую неделю в воскресенье.

короткие коды

Разрешаю тебе кронтаб Использование коротких кодов для облегчения чтения записей cron.

@перезагружать - Запускать один раз при запуске

@yearly Выполнять один раз в год «0 0 1 1 *».

@ ежегодно - как ежегодно

@monthly - Запускать раз в месяц «0 0 1 * *»

@еженедельно Запускайте один раз в неделю, «0 0 * * 0»

@ежедневно Запускайте один раз в день, «0 0 * * *»

@midnight - ежедневно то же самое

@по часам - Играйте каждый час «0 * * * * *»

Например:

@hourly mysqlcheck --all-databases --check-only-changed --silent

Редактировать записи cron от имени другого пользователя

Бывают случаи, когда вам нужно добавить карточки crontab. Например, для автоматического продления SSL-сертификата Let is Encrypt необходимо запустить сценарий обновления корневого каталога. Чтобы отредактировать карточки crontab, просто добавьте sudo перед командой:

sudo crontab -e

Точно так же вы можете запланировать задание cron от имени другого пользователя, используя флаг -u:

sudo crontab -u username -e

Например, чтобы запустить задание cron от имени пользователя www-data, используйте следующую команду:

sudo crontab -u www-data -e

Обзор деятельности Крона

Хотя теперь вы готовы запускать определенные команды или сценарии, вы можете убедиться, что они выполняются. Встроенный cron заключается в том, что после того, как вы запустите команду, он отправит электронное письмо владельцу cron. Это можно изменить с помощью переменной «MAILTO».

Руководство для начинающих по использованию Cron для планирования задач в Linux - Linux

إضافة MAILTO=yourmail@yourdomain.com Все важные отчеты будут отправлены крон на конкретный адрес электронной почты. Эту переменную можно найти в верхней части экрана редактирования crontab. Однако, если его нет, вы можете добавить переменную, и она будет работать должным образом.

Несколько адресов электронной почты можно разделять запятыми. Если вам нужна другая команда электронной почты в другом месте, вы можете добавить команду MAILTO непосредственно над командой. Команды будут отправлены после этого MAILTO на новый адрес. если ты уйдешь ПОЧТА = пусто , уведомления будут отправлены владельцу записи cron.

Кроме того, вы можете использовать оператор перенаправления (>) для отправки вывода, когда он вам нужен.

34 3 * * 0 mysqlcheck --all-databases --check-only-changed --silent > /dev/null

Вышеупомянутое перенаправит вывод на «/ dev / null», который не отправляет никаких электронных писем и игнорирует вывод.

Если вы хотите убедиться, что задание выполняется и не хотите отправлять электронную почту, вы также можете проверить журналы cron. В большинстве систем для доступа к записям cron требуются права суперпользователя. Журнал cron находится в папке «/ var / log». Файл cron или syslog будет отображать журнал выполненных записей cron.

sudo grep crontab syslog
Руководство для начинающих по использованию Cron для планирования задач в Linux - Linux

Cron можно дополнительно ограничить, чтобы разрешить конкретное использование, и можно установить настройки по умолчанию. С добавлением каналов и перенаправлений записи cron могут быть настроены для выполнения самых разных задач. В конечном итоге cron - это инструмент, который дает вам возможность запускать задачи на досуге и обеспечивать текущее обслуживание частей вашей системы после вашего согласия.

Перейти к верхней кнопке