Cron - это мощный планировщик, который позволяет вам планировать сценарии или команды и запускать их на регулярной основе. Это сердцебиение, которое позволяет синхронизировать различные программы и пользовательские сценарии. Вы можете запланировать запуск скриптов в файле crontab. Хотя этот файл может показаться устрашающим при первом просмотре, его легко понять, немного потренировавшись.
В некоторых дистрибутивах Linux, таких как Arch Linux, cron не устанавливается по умолчанию, потому что он использует systemd в качестве альтернативы cron. Кроме того, существует множество реализаций Cron, каждая со своим собственным способом редактирования / планирования заданий Cron. В этом руководстве мы сосредоточимся на cronie, который является настройкой по умолчанию в большинстве дистрибутивов Linux, таких как Ubuntu.
Просмотреть записи для cr
для отображения кронтаб Это позволяет вам просматривать запланированные задачи, которые будут выполняться под вашей учетной записью.
crontab -l
Вы также можете просмотреть запланированные задачи для учетной записи 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».
إضافة 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 можно дополнительно ограничить, чтобы разрешить конкретное использование, и можно установить настройки по умолчанию. С добавлением каналов и перенаправлений записи cron могут быть настроены для выполнения самых разных задач. В конечном итоге cron - это инструмент, который дает вам возможность запускать задачи на досуге и обеспечивать текущее обслуживание частей вашей системы после вашего согласия.