У вас установлены пакеты из репозитория «обновлений», которые новее, чем те, что находятся на носителе ISO, в котором есть пакеты только с исходной даты этого выпуска. Yum не может получить зависимости (, поскольку кажется, что вы отключили обновления ), потому что обновленный пакет glibc требует установки заголовков glibc -той же версии, которая недоступна.
Оригинальный ответ на исходный вопрос.
Вам нужно что-то вроде этого:
0 1 1-21 * * [ $(date +\%u) -eq 3 ] && "call your command/script here"
Это расписание 0 1 1-21 * *
означает запуск заданий "в 01 :00:00 каждый день --месяца с 1 по 21; теперь возникает вопрос, почему мы ограничиваемся 1 -21? Ответ заключается в том, что в лучшем случае 1 число месяца будет уже запущено в среду (, поэтому мы выбрали1 ), и crontab будет запускаться 1 число , 8 число и 15 числа дня --месяца;
И в худшем случае это будет последний день первой недели (день 7 ), поэтому crontab будет запущен 7 го , 14 го и21числа числа --месяца; поэтому мы ограничили количество рабочих дней до 1 ~21 дня месяца.
Но тогда man -s 5 crontab
говорит:
Note: The day of a command's execution can be specified by two fields — day of month, and day of week. If both fields are restricted (i.e., don't start with *), the command will be run when e̲i̲t̲h̲e̲r̲ field matches the current time.
и поэтому мы выбираем только день -месяца -и ставим *в качестве дня -недели -:
вместо того, чтобы указывать день -недели -в crontab, как указано выше, мы обрабатываем это, выполняя простуюtest
оболочкой с [ $(date +\%u) -eq 3 ]
; это проверяет, является ли день -недели -третьим днем недели, т.е. является ли это средой; (0 -6 дня -числа -недели, 0 Пн,...., 6 Вс ), затем выполните команду/скрипт.
Ответ на пересмотренный вопрос.
0 1 * * 3 [ $(date +\%m) -eq $(date -d'+7days' +\%m) ] && scriptA.sh || scriptB.sh
Если это не последняя среда ([ $(date +\%m) -eq $(date -d'+7days' +\%m) ]
, с помощью этого мы проверяем, что сегодняшняя среда -месяц $(date +\%m)
+7 дней спустя (следующая среда -месяц$(date -d'+7days' +\%m)
)находится в том же месяце, так что это не последняя среда, тогда будет выполняться scripA.sh, иначе это последняя среда, и будет выполняться scriptB.sh.
с указанным выше, scriptA.sh будет выполняться каждую среду месяца, кроме последней среды, в которую затем будет выполняться scriptB.sh.
Конечно, можно переместить эти тесты внутрь скрипта[AB].sh вместо того, чтобы усложнять записи в crontab.