Главная | Контакты | Настройки СМЕНИТЬ ПАЛИТРУ:

Главная > Программы > Cron

Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.

Введение

Шаблон задания для Cron выглядит примерно так:

Минуты(0-59) Часы(0-24) День(1-31) Месяц(1-12) День недели(0-6) Команда

Вот иллюстрация этого же шаблона, которую можно сохранить себе:

Формат cronjob-выражения

Звёздочками обозначены конкретные блоки времени.

Для отображения содержимого crontab-файла текущего пользователя используйте команду:

# crontab -l

Для редактирования заданий пользователя есть команда:

# crontab -e

Если эта команда выполняется в первый раз, вам предложат выбрать редактор для Cron:

no crontab for sk - using an empty one

Select an editor. To change later, run 'select-editor'.
 1. /bin/nano <---- простейший
 2. /usr/bin/vim.basic
 3. /usr/bin/vim.tiny
 4. /bin/ed

Choose 1-4 [1]:

Выбирайте на своё усмотрение. Вот так изначально выглядит crontab-файл:

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

Чтобы изменить crontab-файл другого пользователя (например, ostechnix):

# crontab -u ostechnix -e

Ниже приведены несколько примеров cron-заданий:

  1. Чтобы выполнять команду каждую минуту, задание должно быть такое:
    # * * * * * <исполняемая-команда>
  2. Похожее задание, только команда будет вызываться каждые пять минут:
    # */5 * * * * <исполняемая-команда>
  3. Вызывать команду 4 раза в час (каждые 15 минут):
    # */15 * * * * <исполняемая-команда>
  4. Чтобы выполнить команду каждый час в 30 минут, пишем:
    # 30 * * * * <исполняемая-команда>

    Т. е. команда будет выполняться не каждые 30 минут, а тогда, когда значение минут будет равно 30 (например, 10:30, 11:30, 12:30 и т. д.).

  5. Значения времени можно комбинировать, перечислив их через запятую. Следующий код будет выполнять команду три раза в час: в 0, 5 и 10 минут.
    # 0,5,10 * * * * <исполняемая-команда>
  6. Выполнять команду каждый час будет следующее задание:
    # 0 * * * * <исполняемая-команда>
  7. Выполнение команды каждые два часа:
    # 0 */2 * * * <исполняемая-команда>
  8. Чтобы выполнять команду каждый день (в 00:00):
    # 0 0 * * * <исполняемая-команда>
  9. Выполнение команды каждый день в 03:00:
    # 0 3 * * * <исполняемая-команда>
  10. Выполнение команды каждое воскресенье (sunday):
    # 0 0 * * SUN <исполняемая-команда>
  11. Другой вариант задания, которое будет выполнять команду каждое воскресенье (естественно, тоже в 00:00):
    # 0 0 * * 0 <исполняемая-команда>
  12. Выполнение команды каждый день с понедельника по пятницу:
    # 0 0 * * 1-5 <исполняемая-команда>
  13. Следующее задание будет выполнять команду каждый месяц, 1-го числа в 00:00:
    # 0 0 1 * * <исполняемая-команда>
  14. Выполнять команду в 16:15 каждого первого числа месяца будет это задание:
    # 15 16 1 * * <исполняемая-команда>
  15. Выполнение команды каждые три месяца:
    # 0 0 1 */3 * <исполняемая-команда>
  16. Выполнение команды в строго определённое время и месяц:
    # 5 0 * 4 * <исполняемая-команда>
  17. Задание будет вызывать команду в начале каждого полугодия (в 00:00 1-го дня):
    # 0 0 1 */6 * <исполняемая-команда>
  18. Выполнение команды каждый год 1-го января в 00:00:
    # 0 0 1 1 * <исполняемая-команда>

Ещё существуют готовые задания:

  • @reboot — одиночное выполнение команды при загрузке;
  • @yearly — раз в год;
  • @annually — тоже раз в год;
  • @monthly — раз в месяц;
  • @weekly — один раз в неделю;
  • @daily — раз в день;
  • @midnight — тоже раз в день;
  • @hourly — раз в час.

Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:

@reboot <исполняемая-команда>

Команда для очистки всех заданий текущего пользователя:

# crontab -r

Чтобы узнать о подробностях, есть команда:

# man crontab

Вышеперечисленного уже должно хватить для базовой работы с Cron и составления заданий.

Синтаксис crontab-генераторов

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

Crontab.guru

crontab.guru — отличный сайт, чтобы изучить различные примеры cron-заданий. Просто введите данные и сайт самостоятельно сгенерирует конечное задание.

Сайт Crontag buru

На сайте есть разделы, посвящённые примерам и советам.

Crontag Generator

crontab-generator.org — ещё один сайт, который помогает быстро сгенерировать crotab-выражения. Принцип такой же: нужно ввести все необходимые данные в формы и нажать кнопку «Generate Crontab Line» внизу страницы.

Сайт Crontab Generator

Вот такое конечное выражение вы увидете на сайте:

Помимо этого, есть веб-инструмент «Crontab UI», который обеспечивает не только простоту создания crontab-заданий, но и безопасность. Вот статья, посвящённая этому инструменту.

Материал взят с сайта: https://tproger.ru/translations/guide-to-cron-jobs/

Главная > Программы > Cron