Comment exécuter un travail cron toutes les 30 minutes?


224

Je cherche à ajouter une crontabentrée pour exécuter un script toutes les 30 minutes, à l'heure et 30 minutes après l'heure ou quelque chose de proche. J'ai ce qui suit, mais il ne semble pas fonctionner sur 0.

*/30 * * * *

Quelle chaîne dois-je utiliser?

Le cron fonctionne sur OSX.


Avez-vous réussi à faire fonctionner votre crontab? Votre problème n'est peut-être pas la crontab, mais son utilisation.
Eddie

Il exécute 2 autres scripts, un toutes les minutes.
Darryl Hein

1
J'attends de voir si l'une des réponses ci-dessous fonctionne, il suffit d'attendre que les 30 prochaines minutes soient écoulées ... dans 3 minutes.
Darryl Hein

2
... Ne pourriez-vous pas simplement changer 0,30 en 0,5? Si 0,5 fonctionne, pourquoi pas 0,30?
George Stocker

1
Vous ne nous avez jamais dit si cela fonctionnait à l'heure!
Eddie

Réponses:


487

Faire:

0,30 * * * * your_command

1
Fonctionne très bien! Dans CentOS crontab, je devais faire quelque chose comme 0,30 * * * * root your_commandoù root serait l'utilisateur que j'utilise.
prograhammer

@prograhammer - Cette ligne faisait-elle partie de la crontab d'une racine ou de la crontab d'un autre utilisateur?
Muhamed Huseinbašić

@ MuhamedHuseinbašić bonne question, car il y a 2 crontabs différents (le global puis un utilisateur). Je vais devoir vérifier et voir ...
prograhammer

100

crontab ne comprend pas les "intervalles", il ne comprend que les "horaires"

heures valides: 0-23 - minutes valides: 0-59

Exemple 1

30 * * * * your_command

cela signifie "exécuter lorsque la minute de chaque heure est de 30 " (s'exécuterait à: 1h30, 2h30, 3h30, etc.)

exemple # 2

*/30 * * * * your_command

cela signifie "exécuter lorsque la minute de chaque heure est divisible par 30 " (se déroulerait à: 1h30, 2h00, 2h30, 3h00, etc.)

exemple # 3

0,30 * * * * your_command

cela signifie "exécuter lorsque la minute de chaque heure est 0 ou 30 " (s'exécuterait à: 1h30, 2h00, 2h30, 3h00, etc.)

c'est une autre façon d'obtenir les mêmes résultats que l'exemple # 2

exemple # 4

19 * * * * your_command

cela signifie "exécuter lorsque la minute de chaque heure est 19 " (s'exécuterait à: 1:19, 2:19, 3:19, etc.)

exemple # 5

*/19 * * * * your_command

cela signifie "exécuter lorsque la minute de chaque heure est divisible par 19 " (s'exécuterait à: 1:19, 1:38, 1:57, 2:19, 2:38, 2:57, etc.)

note: plusieurs raffinements ont été apportés à ce post par différents utilisateurs dont l'auteur


76

Essaye ça:

0,30 * * * * your command goes here

Selon la page de manuel officielle de Mac OS X crontab (5) , la /syntaxe est prise en charge. Ainsi, pour comprendre pourquoi cela ne fonctionnait pas pour vous, vous devrez consulter les journaux de cron. Dans ces journaux, vous devriez trouver un message d'erreur clair.

Remarque: Mac OS X semble utiliser Vixie Cron, le même que Linux et les BSD.


J'ai toujours utilisé * / 30 avec succès, mais je ne me souviens pas d'une de mes applications où elle était trop critique si elle ne fonctionnait qu'une fois par heure, donc je ne pense pas avoir déjà vérifié.
Adam Hawes

2
@Adam Hawes: J'ai également utilisé * / xx avec succès dans le passé, mais sous Linux et sous UNIX. Je n'ai pas personnellement essayé Mac OSX. La question d'origine ne disait pas quel OS. Certains UNIX plus anciens ne prennent pas en charge * / xx
Eddie

Votre réponse a également fonctionné, mais Vlad a moins de représentants, alors je lui ai donné les points.
Darryl Hein

1
@ DarrylHein lol, aujourd'hui Eddie a moins de représentants :-p. J'évote Eddie.
débutant


5

Vous mentionnez que vous utilisez OS X - J'ai utilisé cronnix dans le passé. Ce n'est pas aussi geek que de le modifier vous-même, mais cela m'a aidé à savoir ce que les colonnes sont en un tournemain. Juste une pensée.


Cela pourrait également être utile autrement.
Darryl Hein

3

Vous pouvez utiliser les deux " symboles , ' OU diviser ' / '.
Mais, ' / ' est meilleur.
Supposons le cas «toutes les 5 minutes». Si vous utilisez ' , ', vous devez écrire le travail cron comme suit:

0,5,10,15,20,25,30,35,....    *      *     *   * your_command

Cela signifie exécuter votre_commande toutes les heures pendant toutes les minutes définies: 0,5,10, ...

Cependant, si vous utilisez '/', vous pouvez écrire le travail simple et court suivant:

*/5  *  *  *  *  your_command

Cela signifie exécuter votre_commande dans les minutes qui sont divisibles par 5 ou dans les mots plus simples, '0,5,10, ...'

Donc, le symbole divisible '/' est toujours le meilleur choix;

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.