Я хочу программно изменить время выполнения определенных заданий cron.
Я не уверен, правильно ли я поступаю, но вот план.
Задания, которые могут быть изменены, будут содержать комментарий в конце строки "# change-enabled".
15 5 7,14,21,28 * * /path/to/executable1 #change-enabled
15 * * * * /path/to/executable2
45 5 */2 * * /path/to/executable3 #change-enabled
Затем я хочу направить вывод из "crontab -l" через sed, чтобы перехватить и изменить задания с этим комментарием в конце, и передать результаты этого через "crontab -".
// Редактировать
Моя интуиция говорит мне, чтобы я не делал этого как root, потому что новый час определяется с использованием данных от третьей стороны. (API экспорта данных Google Analytics) Так что /etc/cron.d/ - это то, что я собираюсь избегать для этого приложения.
Вот команда, которая работала со всеми моими текущими заданиями cron во время отладки. Я использовал «date +% l» вместо «/ home / user / slow-hour» и отключил «| cron -», чтобы посмотреть, что будет напечатано.
crontab -l | sed -e "s/^\([^ ]*\) [0-9]* \(.*#change-enabled\)/\1`/home/user/slow-hour` \2/" | crontab -
Содержимое ~ / slow-hour будет скриптом, который извлекает почасовые данные для профилей веб-сайтов в Google Analytics и ищет самый медленный час. В случае какой-либо ошибки этот скрипт вернет 1:00, отправьте мне уведомление по почте и затем поручитесь.
Чтобы уменьшить вероятность пропуска выполнения дней из-за медленного часа, предшествующего текущему часу, автоматический хронограф будет настроен на работу в полночь, и вернется самый ранний час ~ / медленный час Быть 1 утра.
Основываясь на моих ручных настройках работы cron в прошлом, я не ожидаю, что исключение полуночи будет самым медленным часом в моем случае.