Crontab в Linux: ПРИМЕРЫ планирования заданий

⚡ Умное резюме

Crontab в Linux позволяет планировать автоматическое выполнение команд в фиксированное время, дату или интервал с помощью демона cron, что дает администраторам возможность автоматизировать резервное копирование, очистку журналов, уведомления и плановое обслуживание системы без какого-либо ручного вмешательства.

  • Демон Cron: Фоновый процесс cron считывает файлы crontab и запускает каждое запланированное задание ровно в указанную вами минуту.
  • 🇧🇷 Формат Crontab: Перед командой для выполнения отображаются пять временных полей: минута, час, день месяца, месяц и день недели.
  • ✍️ Вакансии редактора: Используйте команду crontab -e для добавления или изменения заданий, crontab -l для их отображения и crontab -r для их удаления.
  • 🔁 Специальные строки: Сокращения, такие как @reboot, @daily, @weekly и @hourly, заменяют пять полей времени в стандартных расписаниях.
  • 📅 Практические примеры: Готовые шаблоны охватывают периодичность каждые пять минут, конкретные дни недели, ежемесячные запуски и задачи на этапе запуска.
  • 🤖 Помощь ИИ: Искусственный интеллект и GitHub Copilot могут генерировать и объяснять cron-выражения за считанные секунды.

Использование Crontab в планировании заданий Linux: примеры.

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 с полем, которое она контролирует, от минуты до дня недели, а затем команду для выполнения.

Диаграмма формата crontab в Linux, показывающая пять полей времени и команду.

Пять полей времени принимают следующие значения: минута (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

Часто задаваемые вопросы (FAQ)

Пользовательские crontab-файлы хранятся в /var/spool/cron/ (или /var/spool/cron/crontabs/ в Debian и других дистрибутивах). Ubuntu), в то время как общесистемное расписание находится в каталогах /etc/crontab и /etc/cron.d. Всегда редактируйте пользовательские crontab-файлы с помощью команды crontab -e, а не открывайте эти файлы напрямую.

Cron запускает задания только в точно запланированное время и пропускает их, если машина выключена. Anacron tracks запускает пропущенные задания после перезагрузки системы, поэтому подходит для ноутбуков и настольных компьютеров, которые работают не постоянно.

Cron использует минимальную среду, поэтому обычно причиной является ограниченный путь PATH. Используйте абсолютные пути для команд и скриптов, сделайте скрипт исполняемым и перенаправляйте вывод в файл журнала, чтобы вы могли фиксировать любые ошибки для отладки.

Добавьте к команде >> /path/to/logfile 2>&1, чтобы записывать стандартный вывод и ошибки в файл. В качестве альтернативы, установите переменную MAILTO в верхней части crontab, чтобы cron отправлял вывод каждого задания по электронной почте на указанный адрес.

Файлы /etc/cron.allow и /etc/cron.deny регулируют доступ. Если существует файл cron.allow, только пользователи, указанные в нем, могут использовать crontab. Если существует только файл cron.deny, планировать задания могут все пользователи, кроме указанных в нем.

В пользовательском файле crontab, созданном с помощью команды crontab -e, пять полей содержат время, за которым следует команда. Системный файл /etc/crontab добавляет поле, указывающее имя пользователя, запускающего задание, со следующими значениями: минута, час, день, месяц, день недели, пользователь, а затем команда.

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

Да. Второй пилот GitHub Может генерировать выражения cron из простого комментария на английском языке, объяснять, что делает расписание типа */5 * * * *, и составлять сценарий оболочки для запуска задания. Всегда проверяйте выражение перед добавлением его в рабочий crontab.

Подведем итог этой публикации следующим образом: