76 votes

Quelle est la syntaxe correcte pour exécuter cron toutes les 4 heures ?

J'ai la syntaxe suivante (qui je pense est correcte ?) mais il exécute la commande toutes les minutes !

* */4 * * * /cmd.sh

82voto

Evan Anderson Points 140581

Le message original, avant d'être modifié, montrait la configuration comme suit :

  • */4 * * * /cmd.sh

L'auteur du message n'était pas familier avec le format Markdown et a placé un astérisque dans la première colonne, ce qui l'a fait apparaître comme une puce. J'ai édité leur message pour refléter ce qu'ils avaient l'intention de publier :

* */4 * * * /cmd.sh

Dans cette configuration, le posteur obtiendrait le comportement qu'il a observé : La tâche sera exécutée une fois par minute pendant les heures qui sont divisibles par 4.

Pour éviter de courir une fois par minute, un nombre est nécessaire dans la première colonne, comme ceci :

15 * * * * whatever...

Cela fonctionnera à la 15ème minute après chaque heure.

En mettant tout ça ensemble : Pour fonctionner une fois par heure pendant les heures qui sont divisibles par 4, utilisez cette syntaxe :

15 */4 * * * whatever...

81voto

brodie Points 3020
0 0,4,8,12,16,20 * * * /cmd.sh

C'est probablement comme ça que je le ferais. Le travail sera exécuté toutes les 4 heures, à 00h00, 04h00, 08h00, 12h00, 16h00, 20h00.

C'est juste une façon un peu plus verbeuse d'écrire */4, mais cela devrait fonctionner de la même manière.

29voto

Faites un crontab -e et ajoutez l'entrée suivante

0 */4 * * * chemin_vers_le_script

Cela fera le script toutes les 4 heures.

10voto

Le problème est le * dans la première colonne

' * */2 * * * /path-to-script '

Cela signifie qu'il faut courir chaque minute de l'heure, mais seulement toutes les deux heures.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X