web-dev-qa-db-fra.com

Spécifier "toutes les valeurs impaires" dans crontab?

Dans crontab, je peux utiliser un astérisque pour signifier chaque valeur, ou "*/2" pour signifier chaque valeur paire.

Existe-t-il un moyen de spécifier chaque impair valeur? (Est-ce que quelque chose comme "1 + */2" fonctionnerait?)

61
levik

Selon votre version de cron, vous devriez pouvoir faire (pendant des heures, par exemple):

   1-23/2

En passant par la section EXTENSIONS de la page de manuel crontab (5):

   Ranges can include "steps", so "1-9/2" is the same as "1,3,5,7,9".

Pour une solution plus portable, je suppose que vous n'avez qu'à utiliser la simple liste:

   1,3,5,7,9,11,13,15,17,19,21,23

Mais il pourrait être plus facile d'encapsuler votre commande dans un script Shell qui se fermera immédiatement s'il n'est pas appelé dans une minute impaire.

89
zigdon

Chaque minute impaire serait:

1-59/2 * * * * 

Chaque minute paire serait:

0-58/2 * * * * 
57
grigb

Essayer

1-23/2

D'après votre question, je suppose que Vixie Cron. Je doute que cela fonctionne avec n'importe quel autre cron.

2
Paul Tomblin

En lisant le manuel "1-23/2" (pendant des heures) ferait l'affaire.

2
erlando

Fonctionne sur Cronie Même avec un intervalle de 5 minutes, par ex.

3-58/5 * * * * /home/test/bin/do_some_thing_every_five_minute
0
Tomas Jensen

Je me rends compte que c'est près de 10 ans, mais j'avais du mal à obtenir 1-23/2 pour un travail toutes les deux heures, heures impaires.

Pour tous vos utilisateurs où, exact la précision des heures impaires n'est pas nécessaire. J'ai fait ce qui suit qui correspondait aux besoins de mes équipes.

59 */2 * * *

Exécutez le travail toutes les deux heures, à la 59e minute.

0
pbjolsby