CRON выражение начинается каждый девятого месяца, исключая выходные - PullRequest
1 голос
/ 06 февраля 2020

Мне нужно запланировать работу на 9-е число каждого месяца. а если 9-е число выпадает на выходные, то оно должно работать в следующий понедельник

, например, 9 февраля - воскресенье, поэтому оно должно выполняться 10-го февраля, то есть на следующий рабочий день.

1 Ответ

0 голосов
/ 06 февраля 2020

Этот вид логики c не будет полностью возможен из вашего расписания crontab. Я также укажу на вероятность того, что понедельник , а не обязательно будет «следующим рабочим днем» (например, в выходные дни), и в этом случае вы также можете учесть это.

Если вы всегда выберете понедельник, когда 9-е число будет выходным (независимо от того, что этот понедельник реальный рабочий день , вы можете запланировать выполнение задания cron на 9-е, 10-го и 11-го числа каждого месяца. Например, это будет выполняться 9/10/11-го числа в 8:00 каждый месяц:

* 8 9-11 * 0 your_script

После этого логика c для определения необходимости запуска задач должна обрабатываться внутри самого скрипта. Если вы используете Python, например:

import datetime

today = datetime.date.today()
weekday = today.weekday()

if weekday is 5 or weekday is 6:
    print("it's the weekend, do nothing")
elif today.day is 9 or (today.day is not 9 and weekday is 0):
    print("run the script on the 9th or the first Monday after the 9th")
else:
    print("this should not happen")

(обратите внимание, что скрипт будет работать на каждый понедельник с этой логикой c, но если вы настроите задание cron только на 9/10/11-е число месяца, то оно будет работать просто отлично)

Я очень надеюсь, что это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...