Это то, что приходит на ум, когда речь заходит о "выполнении задач через определенные промежутки времени" в Linux и UNIX — crontab. Система сама выполняет повторяющиеся задачи, что так удобно! Но если не разобраться, это может стать настоящей головной болью, и действительно, это существо может быть одновременно и ангелом, и демоном. На основе своего опыта многократной борьбы с crontab я хочу поделиться, что такое crontab, как его использовать и несколько полезных советов.

Что такое crontab?

crontab — это, простыми словами, инструмент для "планирования выполнения задач автоматически и регулярно" в системах Linux и UNIX. С помощью этой настройки я могу легко справляться с рутинными задачами, которые повторяются каждый день, каждую неделю или каждый месяц. Просто установите настройки, и он будет выполнять задачи за меня, так что я чувствую себя так, будто у меня есть личный секретарь.

Все это становится возможным благодаря демону cron. Демон cron проверяет записи в файле crontab и выполняет команды в указанное время, поэтому я с удовольствием использую crontab.

Изучаем команды crontab

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

  • crontab -e : команда для открытия файла crontab для добавления или изменения задач.
  • crontab -l : показывает содержимое файла crontab текущего пользователя.
  • crontab -r : удаляет файл crontab текущего пользователя. (Обращайтесь осторожно)

Каков формат файла crontab?

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

*  *  *  *  * /path/to/command
-  -  -  -  -
|  |  |  |  +----- День недели (0 - 7) (воскресенье - 0 или 7)
|  |  |  +------- Месяц (1 - 12)
|  |  +--------- День (1 - 31)
|  +----------- Час (0 - 23)
+------------- Минута (0 - 59)

Каждое поле может содержать числа или *, где * обозначает все значения. Например, * * * * * означает "выполнять каждую минуту, каждый час, каждый день, каждый месяц, в любой день недели". Короче говоря, это выполняется каждую минуту. Если уметь это использовать, можно действительно организовать разнообразное планирование.

Запуск задач каждые 5 минут: пример с crontab

Например, у нас есть команда */5 * * * * /path/to/myscript.sh. Эта настройка означает, что скрипт myscript.sh будет выполняться каждые 5 минут.

  • */5 : каждые 5 минут
  • * : обозначает любое время
  • * : обозначает любой день
  • * : обозначает любой месяц
  • * : обозначает любой день недели

Итак, скрипт выполняется каждые 5 минут в течение 24 часов в сутки. Не нужно беспокоиться, он запланирован на выполнение, что очень удобно!

Объяснение использования crontab

Разнообразные примеры использования

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

  1. Запуск скрипта каждый час
    0 * * * * /path/to/script.sh
    Запускает скрипт в 0 минут каждого часа, например в 12:00, 13:00, 14:00…
  2. Запуск резервного копирования каждый день в 3 часа ночи
    0 3 * * * /path/to/backup.sh
    Если ежедневно проводить резервное копирование в 3 часа ночи, это может уменьшить количество ночной работы.
  3. Запуск каждый 1-й и 15-й день месяца в 2 часа ночи
    0 2 1,15 * * /path/to/script.sh
    Полезно периодически выполнять важные дела в начале и середине месяца.
  4. Запуск только в выходные дни
    30 8 * * 6,7 /path/to/weekend_script.sh
    Настройка для выполнения скрипта каждую субботу и воскресенье в 8:30 утра.

Что нужно учитывать при настройке crontab

Задачи crontab в Linux сохраняются даже после перезагрузки системы. Однако есть один важный момент: если задача запланирована на время, когда система была выключена, она не будет выполнена. Например, если задача запланирована на 15:00, а система включается в 16:00, задача в 15:00 будет пропущена.

Чтобы исправить эту ситуацию, можно использовать программу anacron. Anacron — это инструмент, который выполняет "пропущенные задачи", даже если система была выключена. Это полезно для.Combat вашей задачи crontab, когда необходимо обязательно выполнять задание через определенные промежутки времени.


Правильное использование crontab может быть очень полезным для меня. Автоматизация важных задач благодаря планированию времени не только сэкономит время, но и снизит вероятность ошибок. Конечно, в начале это может показаться сложным из-за формата, но как только привыкнете, вас ждет невероятное удобство. Почему бы не погрузиться в мир crontab читая эту статью?