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.

Darryl Hein
la source
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
vladr
la source
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

aequalsb
la source
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.

Eddie
la source
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
10

Si votre tâche cron s'exécute uniquement sur Mac OS X, vous pouvez utiliser à la place launchd.

À partir de la planification des travaux chronométrés (documents officiels Apple) :

Remarque: bien qu'il soit toujours pris en charge, cron n'est pas une solution recommandée. Il est déconseillé au profit de launchd.

Vous pouvez trouver des informations supplémentaires (comme la page Wikipedia de launchd ) avec une simple recherche sur le Web.

PCheese
la source
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.

Allyn
la source
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;

Mohsen Abasi
la source