В большинстве организаций вы работаете только в будние дни — с понедельника по пятницу. В таком случае некоторые задачи должны выполняться только в рабочие дни, а не в выходные. Это может быть такая задача, как отправка электронных писем, проверка посещаемости или создание резервных копий. Какой бы ни была задача, есть способ автоматизировать ее выполнение только в определенное время каждый день в будние дни. Для этого вы должны использовать утилиту cron Linux. Если вы не знаете, как использовать crontab для планирования некоторых задач, которые выполняются только в будние дни, читайте дальше, чтобы узнать.
Существуют различные способы использования 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 для планирования задания, которое выполняется только в будние дни. Кроме того, мы узнали другие способы, которыми вы можете поиграть с другими полями, чтобы более точно указать день месяца, час, минуту и месяц, которые должна выполнять ваша команда. Попробуйте!