Я попытался использовать выражение cron Weekend (SAT-SUN):

0 0 18 ? 1/1 SAT#1,SUN#1 *  

но это не сработало.

1 ответ1

2

Вы не говорите, какую версию CRON вы используете, но из моего ограниченного опыта, как правило, конфигурация CRON:

Мин. Час День Месяц День недели, за которым следует команда

поэтому в первый день месяца это будет 0 0 1 * * не начинается 0 0 18

Одним из решений является то, что вы можете использовать синтаксис команды bash case ... esac

0 0 1,2,3 * * case `date "+\%w\%d"` in \\[1-5]\\01|\\1\\02|\\1\\03) /path/to/your/script ;; esac 

Затем запись cron проверяется по значению выражения "case word in" до тех пор, пока не будет найдено совпадение. Если ничего не найдено, будет использовано условие по умолчанию.

Bash Базовый формат даты $ date «+ Где Параметр из списка ниже и разделитель - это любой разделитель полей, такой как дефис (-), косая черта, двоеточие: и это необязательно.

Примеры форматов даты в Bash% d - это ключевое слово для двухзначной даты% w дня недели, начиная с воскресенья (0), то есть smtwtfs (в воскресенье примечание может быть 0 и 7).

Здесь строковое слово сравнивается с каждым шаблоном, пока не будет найдено совпадение. Оператор (ы) после соответствующего шаблона выполняется. Если совпадений не найдено, инструкция case завершается без выполнения каких-либо действий.

Когда часть оператора (ов) выполняется, команда ;; указывает, что поток должен перейти к концу всего оператора case.

так что если в период с понедельника по пятницу или (день 1) дата равна 01 или 03 месяца, то запустите сценарий в 00:00 часов, иначе ничего не делайте

или на выходные

0 0 1 * * case `date "+\%w\%d"` in \\0\\01|\\6\\01|\\6\\02|\\6\\03|\\6\\04|\\6\\05|\\6\\06|\\6\\07) /path/to/your/script ;; esac

В противном случае, но не все CRON работают одинаково, вы также можете попробовать следующие варианты.

За каждую субботу или воскресенье, если это 1-7

0 0 1-7 * 6,7

0 0 1-7 * SAT,SUN

Первый будний день месяца

0 0 1W * *  

Первая суббота ИЛИ воскресенье, если это 1-7

0 0 1-7 * 6#1,7#1   

0 0 1-7 * SAT#1,SUN#1

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .