Я провел немало исследований о том, как это сделать, и вижу, что в cron нет прямого способа запустить работу, скажем, каждый второй четверг.
Прямо сейчас я склоняюсь к созданию сценария, который будет запускаться каждую неделю и будет касаться файла «flag» при его запуске , и, если он запущен и файл уже существует, удалить файл (а не выполнить раз в две недели).
У меня вопрос, есть ли какой-нибудь другой более изящный или более простой способ для достижения этой цели сценария действий bash, запускаемого раз в две недели автоматически?
Благодарность!
Ответы:
Я использовал bash для своей математики, потому что я ленивый; переключи что хочешь. Я пользуюсь тем, что 1 января 1970 года был четвергом; для других дней недели вам придется применить смещение. Крону нужны знаки процента.
Быстрая проверка:
Примечание. Я выбрал случайное время, чтобы показать, что это будет работать, если оно выполняется в любое время в четверг, и выбрал даты, которые пересекают границы года, плюс месяцы с 4 и 5 четвергами.
Выход:
источник
Одним из способов может быть использование
at
утилиты, если вы работаете в Linux. Вы можете поместить это в конец вашего скрипта:где X - время, в которое вы хотите запустить свой скрипт. Для инициализации просто позвоните
at
в тот момент, когда вы хотите запустить его в первый раз, а затем вышеприведенный оператор продолжает обновлять ваш запланированный вызов.источник
Если вы можете использовать
anacron
в системе, все будет гораздо проще. Для использования уanacron
вас должна быть установлена программа, а также вы должны иметь root-доступ. Он не работает на старых системах (например, RHEL 5.x), старые версии ancron работают ТОЛЬКО при загрузке. Он работает с более новыми системами (например, RHEL 6.x).С его помощью
anacron
можно более гибко планировать задания, например, запускать задание X раз в неделю. Такжеanacron
запускает задания, когда компьютер становится доступным, то есть вам не нужно учитывать, когда система работает или не работает.Чтобы запускать скрипт каждую вторую неделю, вы должны добавить строку, похожую на следующую, в / etc / anacrontab:
Взгляните на справочную страницу для деталей.
источник
anacron
, безусловно, является самым чистым решением IMO (если оно не имеет нежелательных последствий для некоторых людей).Я не уверен, есть ли более элегантный способ определять каждую вторую неделю, но это может сработать для вас.
Это запустит сценарий в 6:00 утра в первый и третий четверги месяца.
источник
1-7,15-21,29-31
, но тогда он будет работать вплотную, если будут какие-либо совпадения для последнего сета ...Я запускал его каждую неделю, и мне нужно было проверить сценарий, чтобы узнать, является ли номер недели нечетным: если да, выйдите.
Надо еще немного подумать, чтобы работать с декабря по январь.
Возможно, сценарий установил файл флага «последний успешный запуск». Когда скрипт запустится, проверьте, что файл флага последний раз изменялся 14 дней назад.
источник