У меня есть работа cron, которая выполняется каждые пять минут в течение всего дня.
Я хочу остановить эту работу cron по воскресеньям между 16:00 и 17:00 - после этого времени она должна начаться снова.
Как я могу написать это?
У меня есть работа cron, которая выполняется каждые пять минут в течение всего дня.
Я хочу остановить эту работу cron по воскресеньям между 16:00 и 17:00 - после этого времени она должна начаться снова.
Как я могу написать это?
Поместите это в начало вашего скрипта работы cron (модифицированного по мере необходимости)...
if [[ $(date +%u) -eq 7 && $(date +%H) -eq 16 ]]; then
echo "I don't run at this time"
exit 1
fi
echo "Something to do at other times here..."
Первый экземпляр "date" возвращает день недели (Sunday = 7), второй возвращает "час" (16 = 16.00 - 16.59). Если сценарий находит, что это в настоящее время день 7 и час 16, он завершится.
Как насчет:
*/5 * * * * job.sh > /dev/null
00 16 * * 0 touch /tmp/stopJob.lck
00 17 * * 0 rm -f /tmp/stopJob.lck
В job.sh
просто выйдите, если файл существует:
if [ -f /tmp/stopJob.lck ]
then
exit
fi
Вам может не понадобиться много, если ваше задание cron запускает скрипт, и вы можете проверить его на отсутствие процесса, настроенного для работы между 16:00 и 17:00 по воскресеньям.
Например, я использую задание cron каждые 15 минут, которое вызывает rsync
но только если rsync
еще не запущен.
Он использует команду pidof
чтобы проверить, выполняется ли определенный идентификатор процесса:
PID=$(pidof rsync)
if [ -z $PID ]
then
rsync -avz ....
fi
Вам нужно будет разработать детали для вашей конкретной ситуации. Я представляю это сейчас как идею для размышления.