3

У нас есть около ста установок, каждая из которых выполняет задания cron, такие как запуск и остановка служб, и архивирование файлов журналов этих служб в конце дня в централизованном хранилище.

Одна головная боль у нас - это трехдневные выходные (мы закрыты в праздничные дни). Мы не хотим, чтобы сервисы запускались в эти дни и подключались к машинам нашего делового партнера.

В настоящее время мы делаем это, вручную комментируя наиболее важные задания и позволяя куче ошибок происходить весь день. Не идеально.

В основном, если в поле «день» задано «1-5», мы хотим, чтобы это означало «рабочие дни», а не с понедельника по пятницу ». У нас есть база данных, которая отслеживает, какие дни действительно являются «рабочими днями».

Итак, возможно ли переопределить алгоритм согласования дней в Cron, или есть какой-то другой способ легко установить настройку cron, чтобы избежать запуска в выходные дни в понедельник?

Спасибо!

2 ответа2

4

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

Я написал бы сценарий бегуна, который проверяет базу данных выходных и выходит, если это выходной. Попробуйте что-то вроде:

#!/bin/bash

TODAY=$(date +%Y%m%d)
if grep -q $TODAY /etc/holidays; then
   echo Skipping holiday for $*
   exit 0
fi

$*
0

Я могу представить несколько способов сделать это, но наиболее практичное решение будет зависеть от точной настройки всех заданий cron. Например:

Если база данных рабочего дня может быть запрошена с помощью сценария, вы можете запустить задание cron в воскресенье, которое определяет, является ли следующий день (понедельник) рабочим днем или нет, и устанавливает / очищает файл где-нибудь. Все задания cron могут искать наличие этого файла и выбирать запуск или выход соответственно.

ИЛИ ЖЕ

Вы можете заменить все отдельные записи cron одним основным заданием, которое запускает все остальные, только если (проверяемая) база данных сообщает, что это рабочий день.

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