Перейти к основному содержанию

Crontab — первая пятница месяца

Crontab

Системным администраторам и разработчикам часто приходится сталкиваться с периодическим выполнением скриптов и заданий. В Linux автоматическим выполнением задач по расписанию занимается cron.

Cron — это планировщик, который позволяет автоматически выполнять задачи по заданному расписанию от имени разных пользователей. Такие задачи называются Cron Jobs.

Каждая задача (скрипт) описывается одной строкой в файле crontab. Сначала указывается расписание, потом ссылка на скрипт. Шаблон задания выглядит так:

* * * * * /path/to/job.sh

Что можно понимать как:

[минуты] [часы] [день месяца] [месяц] [день недели] [абсолютный путь к файлу]

Более наглядно (можно скопировать):

# * * * * * /path/to/job.sh
# | | | | |
# | | | | +——— день недели (0-6), 0 — воскресенье
# | | | +————— месяц (1-12)
# | | +——————— день месяца (1-31)
# | +————————— часы (0-23)
# +——————————— минуты (0-59)
  • * — звёздочка обозначает все значения
  • , — разделитель значений
  • - — диапазон значений
  • / — чередование значений

Сегодня мы научимся задавать сложно расписание, например, настроим выполнение задачи в первую пятницу каждого месяца в 08:05. Шаблон задания будет таким:

05 08 */100,1-7 * FRI /path/to/job.sh

Задача выполнится при условии: "в 08:05 каждый 100-й день месяца или с 1 по 7 день месяца если это пятница".

https://crontab.guru/#05_08_*/100,1-7_*_FRI

  • 05 — минуты
  • 08 — часы
  • */100 — каждый 100-й день месяца, такого дня не существует, условие никогда не выполнится, оно всегда FALSE. Нам от этого условия нужна только звёздочка. Если день месяца начинается со звёздочки, то команда будет запущена только тогда, когда оба условия выполнены: день месяца и день недели. В данном случае, день недели пятница: FRI.
  • ,1-7 — через запятую добавляются дополнительные дни месяца: и с 1 по 7 число месяца.
  • * — каждый месяц
  • FRI — по пятницам

*/100,1-7 * FRI можно представить так: (((каждый 100-й день месяца) и (с 1 по 7 число)) и (в пятницу)) каждый месяц.

Можно написать и */32, поскольку 32-го дня месяца не существует.

P.S.

На ESXi 6.7 не прокатило...

Теги

 

Похожие материалы

Резервное копирование Atlassian JIRA через GUI

Резервную копию Atlassian JIRA можно сделать в Администрирование > Система > Импорт и Экспорт > Резервное копирование. Здесь вы сможете сделать резервное копирование содержимого базы данных в доступном формате XML.

Теги

Bitvise SSH Server для Windows

Bitvise SSH Server (WinSSHD) — SSH-сервер, разработанный специально для Windows. Позволяет на Windows машине организовать сервер Secure Shell Handling 2 (SSH2) и Secure FTP (SFTP). Отличается большим количеством настроек. Бесплатно для частного использования при выборе версии Personal Edition, но с ограничениями.

Haproxy на Ubuntu 20.04 LTS

Установим и настроим балансировщик haproxy на Ubuntu 20.04 LTS. Балансировать будем в режиме roundrobin порт TCP 25 на порты localhost TCP 26, 27, 28, 29, 30. На этих портах работает postfix в режиме multi-instance, сделаем единый 25 порт, который будет балансировать нагрузку между экземплярами почтового сервера.

Теги