Как сделать так, чтобы cron запускался каждое другое воскресенье в другое воскресенье?


10

У меня есть задание cron, которое выполняется в 0 0 * * 0/2 - то есть каждое второе воскресенье. Например, он просто побежал сейчас. Однако я хочу, чтобы он работал в другие воскресенья - в следующее воскресенье, а не в этот. Еще один способ выразить это: я предполагаю, что он работает по четным воскресеньям года, но я хочу, чтобы он работал по нечетным воскресеньям.

В «man 5 crontab» я не вижу ничего, что помогло бы мне с этим, поэтому я предполагаю, что мне нужно вернуться к выполнению cronjob в 0 0 * * 0, а затем сделать что-то в команде, которую я запускаю, чтобы проверить, какое воскресенье это является. Может кто-нибудь помочь мне с некоторыми подходящими хитростями командной строки для этого?

ETA: понял, что мои 0/2 не делают то, что я первоначально думал (каждое второе воскресенье) вообще. Он проходит каждое воскресенье, пока этот день недели делится на два, что, конечно, так и есть. D'о. В любом случае, основное требование остается: запустить команду по нечетным воскресеньям.


«нечетные», как в «первое, третье и пятое воскресенье»?
voretaq7

1
Нет, как на 1-й, 3-й, 5-й, 7-й, ... 49-й, 51-й неделе года. Другими словами, каждые две недели по воскресеньям, приходящимся на нечетные недели года.
Скуд

Извините - cron не сделает этого за вас. Вам нужно будет проверить сценарий, подходит ли вам эта неделя. (Кроме того, если вы помните меня из определенного места - HI !!! волны )
Дженни D

Ответы:


3

Я не буду притворяться, что пытался выполнить эту конкретную задачу сам, но на этот вопрос переполнения стека есть некоторые ответы, которые показывают потенциальную хитрость командной строки: /programming/350047/how-to-instruct-cron-to- выполнить-работу-каждый-второй недели


Ни один из них не заставляет Хрона бегать в нечетные недели. Все они просто делают друг друга. Некоторые в чрезвычайно экзотических и «креативных» способах, которые я бы тоже не рекомендовал.
Крис С

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

1
Да, но это по модулю 2, что означает, что он будет работать в четные недели. Может быть возможно сложить несколько evalблоков, чтобы добавить один, а затем выполнить модуль 2. Это в лучшем случае некрасиво, но я полагаю, это может сработать.
Крис С

1
Из связанного ответа это выглядит так, как будто у него есть потенциал: date +\%W\% 2> / dev / null || что угодно ... Однако, чтобы получить нечетные недели, я бы хотел сделать "&& все что угодно" вместо ||
Скуд

1
Итак, просим разъяснений. Вы хотите определить подсчет "каждую нечетную неделю" по неделям или по неделям? Я почти уверен, что последнее возможно, но мне нужно найти несколько старых фрагментов, которые я использовал в прошлом.
nmjk
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.