ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)
Понедельник, 31 марта, 2025
Сегодня у нас 1 праздник:
Международный День Резервного Копирования (World Backup Day). Пользователи сайта социальных новостей reddit предложили сделать дату 31.03 Международным днём резервного копирования, аргументируя это тем, что никогда заранее нельзя узнать, какие сюрпризы преподнесёт 1.04

Как настроить задание Cron, которое запускается только в будние дни

Почему мой Crontab не работает и как его устранить?

В большинстве организаций вы работаете только в будние дни — с понедельника по пятницу. В таком случае некоторые задачи должны выполняться только в рабочие дни, а не в выходные. Это может быть такая задача, как отправка электронных писем, проверка посещаемости или создание резервных копий. Какой бы ни была задача, есть способ автоматизировать ее выполнение только в определенное время каждый день в будние дни. Для этого вы должны использовать утилиту cron Linux. Если вы не знаете, как использовать crontab для планирования некоторых задач, которые выполняются только в будние дни, читайте дальше, чтобы узнать.

 

Как планировать задачи с помощью Cron в Linux и Unix

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

Здесь хитрость заключается в использовании специальных символов и, в частности, дефиса (-), который дает список значений, используемых для данного поля.

Синтаксис crontab следующий:

Min Hour Day-of-month Month Day-of-week [command]

 

Наше внимание сосредоточено на днях недели. Допустимые значения от 0 до 6, где 0 — воскресенье, а 6 — суббота. Поэтому, чтобы указать команду, которая выполняется только в будние дни, мы устанавливаем Day-of-week на 1-5 без пробелов.

Команда будет:

* * * * 1-5 [command]

 

Данный синтаксис не указывает конкретное время, в течение которого должна выполняться команда. Если вам нужно настроить запуск каждый будний день в 10:00 , команда будет выглядеть так:

0 10 * * 1-5 [command]

 

Теперь добавьте следующую команду в конец файла crontab, выполнив следующую команду:

crontab -e

 

Сохраните файл и выйдите.

Теперь у вас есть задание cron для текущего пользователя. Если вы запускаете скрипт, как в этом случае, убедитесь, что вы указали полный путь.

 

Другие варианты запуска команды в рабочие дни

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

1. Будние дни данного месяца

Не каждый месяц рабочий день. Поэтому вы можете выполнять задание cron только в определенный месяц. Для этого вы можете указать месяц, используя номер месяца, где 1 представляет январь. Чтобы запустить ту же команду только в январе в 10:00, измените ее, чтобы она отражала следующую:

0 10 * 1 1-5 [command]

2. Рабочие дни и конкретные дни данного месяца

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

0 10 5 1 1-5 [command]

 

В предыдущем примере мы указали, что именованный скрипт должен выполняться в 10:00 5 января с понедельника по пятницу.

Суть в том, что вы можете изменить различные поля, чтобы настроить, когда команда должна выполняться только в будние дни. Вы можете выбрать, в каком месяце он должен работать, или указать диапазон. Кроме того, вы можете установить точное время или использовать интервал в определенный час в соответствии с вашими потребностями.

 

Вывод

Мы рассмотрели, как вы можете использовать crontab для планирования задания, которое выполняется только в будние дни. Кроме того, мы узнали другие способы, которыми вы можете поиграть с другими полями, чтобы более точно указать день месяца, час, минуту и ​​месяц, которые должна выполнять ваша команда. Попробуйте!

Exit mobile version