Crontab в Linux: ПРИМЕРЫ планирования заданий
⚡ Умное резюме
Crontab в Linux позволяет планировать автоматическое выполнение команд в фиксированное время, дату или интервал с помощью демона cron, что дает администраторам возможность автоматизировать резервное копирование, очистку журналов, уведомления и плановое обслуживание системы без какого-либо ручного вмешательства.

Crontab, сокращение от cron table, — это файл конфигурации и команда, управляющая процессом. Linux Планирование заданий. В разделах ниже объясняется формат crontab, команды для добавления, перечисления и удаления заданий, специальные строки @ и готовые примеры планирования.
Что такое кронтаб?
Cron получил свое название от греческого слова «Chronos», означающего время. Это системный процесс (демон), который автоматически выполняет задачи по заданному расписанию. Cron — это набор команд, используемых для запуска регулярных запланированных задач. Crontab расшифровывается как «таблица cron» и позволяет использовать планировщик заданий cron для выполнения этих задач.
Crontab — это также название программы, используемой для редактирования этого расписания. Она управляется файлом crontab — конфигурационным файлом, в котором перечислены команды оболочки, которые должны периодически выполняться по указанному расписанию.
Зачем использовать задания Cron?
Вот основные причины использования заданий cron в Linux:
- Создает резервные копии файлов журналов или баз данных по расписанию.
- Автоматически удаляет старые файлы журналов.
- Archiочищает и удаляет данные из таблиц базы данных.
- Отправляет уведомления по электронной почте, например, новостные рассылки или напоминания об истечении срока действия пароля.
- Выполняет регулярную очистку кэшированных данных.
- Автоматизирует повторяющиеся задачи в Unix и Linux.
- Автоматизирует плановое техническое обслуживание системы.
Как использовать cron в Linux?
В состав системного пакета Linux входит полезный планировщик задач под названием crontab. Crontab популярен, потому что задачу можно запланировать для выполнения от имени пользователя root, что упрощает автоматизацию изменений в системе. Вы просто меняете задачу один раз, а затем ждете, пока она снова запустится по расписанию.
Формат Crontab в Linux
В файле crontab в Linux содержится шесть полей. Первые пять полей определяют время и дату выполнения, а шестое поле содержит команду для запуска.
Синтаксис Кронтаба:
[Minute] [hour] [Day_of_the_Month] [Month_of_the_Year] [Day_of_the_Week] [command]
Приведенная ниже диаграмма сопоставляет каждую звездочку в записи crontab с полем, которое она контролирует, от минуты до дня недели, а затем команду для выполнения.
Пять полей времени принимают следующие значения: минута (0–59), час (0–23), день месяца (1–31), месяц (1–12 или янв–дек) и день недели (0–7, где 0 и 7 означают воскресенье). Управление каждым полем осуществляется с помощью специальных символов:
- Звездочка (*): Соответствует всем возможным значениям для этого поля.
- Определите диапазон: Используйте дефис для указания диапазона, например, 1-10, 30-40, январь-март или понедельник-среда.
- Определите несколько диапазонов: Используйте запятые для объединения диапазонов, например, apr-jun,oct-dec.
Как добавить/изменить Crontab
Пользователи могут редактировать свои собственные задания crontab с помощью следующей команды crontab. Опция -u указывает на конкретный файл crontab пользователя, поэтому укажите имя пользователя, как показано в последующих примерах:
$ crontab -u -e
Приведённая выше команда открывает личные настройки crontab для вашей системы, которые вы можете редактировать в своём текстовом редакторе по умолчанию.
Нет необходимости перезапускать cron; он автоматически подхватывает ваши изменения. Чтобы просмотреть текущие задания, используйте:
$ crontab -l
Чтобы удалить задачи из crontab, используйте следующую команду:
$ crontab -r
Чтобы добавить или обновить задание в crontab, используйте следующую команду:
crontab -e
Чтобы отредактировать crontab другого пользователя, укажите имя пользователя с помощью параметра -u:
crontab -u username -e
Как составить список Crontab
Чтобы просмотреть записи crontab текущего пользователя:
crontab -l
Чтобы просмотреть записи crontab конкретного пользователя:
crontab -u username -l
Важные примеры Crontab
Вот несколько важных, готовых к использованию примеров расписаний crontab:
| Описание | Command |
|---|---|
| Запускает различные задачи планирования. Приведенная ниже команда выполняется ежедневно в 7:00 и 17:00. |
0 7,17 * * * /scripts/script.sh
|
| Запускает задание cron каждые 5 минут. |
*/5* * * * * /scripts/script.sh
|
| Выполняет задачу каждый Monday в 5 утра. Это полезно для еженедельных задач, таких как очистка системы. |
0 5 * * mon /scripts/script.sh
|
| Запускает ваш скрипт с интервалом в 3 минуты. |
*/3 * * * * /scripts/monitor.sh
|
| Настраивает задание cron, которое выполняется в определенные месяцы — в данном случае, в феврале, июне и сентябре. |
* * * feb,jun,sep * /script/script.sh
|
| Выполняется в выбранные дни. Этот пример запускается каждый день. Monday и среда в 5:XNUMX. |
0 17 * * mon,wed /script/script.sh
|
| Позволяет запускать cron-запросы в первую субботу каждого месяца. |
0 2 * * sat [ $(date +%d) -le 06 ] && /script/script.sh |
| Запускает скрипт с интервалом в 6 часов, заданным ниже. |
0 */6 * * * /scripts/script.sh
|
| Планирует выполнение задачи дважды. Monday и вторник. Используйте следующие настройки, чтобы сделать это. |
0 4,17 * * mon,tue /scripts/script.sh
|
| Настраивает задание cron для выполнения каждые 15 секунд. |
* * * * * /scripts/script.sh * * * * * sleep 15; /scripts/script.sh |
| Планирует задачи на год. Параметр @yearly аналогичен «0 0 1 1 *». Задача выполняется один раз в год в полночь 1 января — удобно для новогодних поздравлений. |
@yearly /scripts/script.sh
|
| Запускает задачи ежемесячно. Параметр @monthly аналогичен "0 0 1 * *". Задача запускается в полночь первого дня каждого месяца. |
@monthly /scripts/script.sh
|
| Выполняет несколько задач с помощью одной записи cron. |
* * * * * /scripts/script.sh; /scripts/scrit2.sh |
| Планирует задачи на еженедельной основе. Параметр @weekly аналогичен “0 0 * * 0”. Он запускает еженедельные задачи, такие как очистка системы, в полночь каждое воскресенье. |
@weekly /bin/script.sh
|
| Планирует задачи на ежедневной основе. Параметр @daily аналогичен “0 0 * * *”. Задача выполняется один раз в день в полночь. |
@daily /scripts/script.sh
|
| Запускает задачи ежечасно. Параметр @hourly аналогичен «0 * * * *». Задача запускается в начале каждого часа. |
@hourly /scripts/script.sh
|
| Запускает задачи при перезагрузке системы. Параметр `@reboot` полезен для задач, которые система должна запускать при загрузке, позволяя фоновым процессам запускаться автоматически. |
@reboot /scripts/script.sh
|

