Help:Cron/fr

From Wikitech
Jump to: navigation, search

Cron est une application pré-installée sur chaque instance, qui vous permet d’exécuter un "job" ou programme particulier à un moment particulier. Les entrées crons sont utiles si vous avez besoin d’exécuter un script régulièrement sans être présent physiquement pour exécuter le programme vous-même.

Syntaxe

La syntaxe crontab est la même pour toutes les instances Wikimedia Labs et pour tous les systèmes de type Unix. Voici un exemple :

# m h  dom mon dow   command
*/5 * * * * sh /home/johndoe/something.sh > /dev/null

Vous disposez de cinq paramètres pour préciser l'heure, la date, le jour du mois ou de la semaine où vous voulez exécuter votre programme ou "cronjob". La ligne précédée par dièse "#" s'affiche dans l'éditeur pour vous guider à trouver la syntaxe pour votre cronjob.

Voici la liste des arguments :

  • m : (minute) Le premier argument est la minute à laquelle vous souhaiter démarrer le programme. Notez que */5 dans l'exemple ci-dessus représente "toutes les 5 minutes".
  • h : (hour) Le second paramètre est l'heure à laquelle vous souhaiter démarrer le programme. L'astérisque permet d’exécuter le job à chaque heure.
  • dom : (day of month) Le troisième paramètre est le jour du mois auquel vous souhaiter démarrer le programme. L'astérisque si vous souhaitez exécuter le job tous les jours.
  • mon : (month) Le quatrième paramètre est le mois de l'année auquel vous souhaiter démarrer le programme. Astérisque pour tous les mois.
  • dow : (day of week) Le cinquième paramètre est le jour de la semaine auquel vous souhaiter démarrer le programme. 1 représente lundi, 2 mardi etc. 0 et 7 représentent dimanche. L'astérisque si vous souhaitez exécuter le job tous les jours de la semaine.
  • command : Le sixième paramètre est la commande principale que vous souhaitez exécuter.
Un détail IMPORTANT : ajoutez s'il vous plait le code "> /dev/null" à la fin de la commande (vous pouvez modifier /dev/null par n'importe quel fichier de votre instance comme fichier de journalisation). Les opérateurs de l’équipe ce plaignent des gens qui ne le font pas et génèrent des messages indésirables dans leur messagerie. Vous pouvez comme alternative configurer
MAILTO=<your email address>
.

You can put the whole string of commands in here (separated by the "&&" symbol), though it is recommended to put everything inside a shell/bash script and call the script from the crontab (to make things much easier).


As you may not host anything in your home directory in the bots project you can use the following:

HOME=/data/project/<bot-directory>

You can later reference it with $HOME.

Continuous or infinitely long running programs

Such programs (like e.g. irc bots) need essentially to be started once and should then run without further action. However it might happen that it stops running because of an error or even a server reboot. In order to circumvent such issues, the program should be verified to run correct regularly. This can be done by a cronjob, but cron will not check whether the process is already present or not. The solution to this is pgrep and a cronjob like this:

COMMAND="<command>"
* * * * * pgrep -u $LOGNAME -fx -- $COMMAND > /dev/null || $COMMAND &> /dev/null

or, for scripts with #! where the string to grep for is different from the invoking command:

* * * * * pgrep -u $LOGNAME -x script.ext > /dev/null || /path/to/script.ext &>> /path/to/logfile

This entry runs every minute (can be reduced to e.g. once per day or else) and executes the <command> only if not already present.

In order to check the currently running processes a list can be retrieved with:

pgrep -u $LOGNAME -lf

Aide complémentaire

Il existe une multitude de documentation pour vous aider à utiliser cron.

Si vous préférez de l'aide instantanée demandez sur IRC.