Planifier des tâches dans FreeBSD avec Cron

Written by Sebastien Lambot on . Posted in Articles techniques, Unix / Linux

Cron est l’équivalent sous Unix du task scheduler de Windows et permet d’exécuter des tâches selon un planning défini.

L’utilitaire cron est un daemon (service) qui tourne en background. Il se réveille chaque minute pour vérifier les fichiers crontabs contenant les actions planifiées.

Ces fichiers crontab sont créés par l’utilitaire crontab et peuvent être de 2 types:

  • crontab système:
    Créé en éditant le fichier /etc/crontab et en y ajoutant une entrée du type

    #minute hour     mday    month  wday    who     command
    *         *         *        *       *        root    /root/myscript.sh -options
  • crontab utilisateur:
    Créé avec la commande crontab -e (les fichiers sont stockés dans /var/cron/tabs/ mais il est déconseillé de les éditer manuellement)

    #minute hour     mday    month  wday    command
    *         *         *        *       *        /root/myscript.sh -options >> /dev/null 2>&1

Le morceau de code  » >> /dev/null 2>&1″ permet de rediriger la sortie standard du script vers /dev/null et de rediriger la sortie des erreurs (2) vers la sortie standard (1). En clair, ça lance la commande sans rien afficher dans le terminal.

Lorsque cron se réveille, il recharge automatiquement en mémoire le contenu des crontab pour prendre en compte les modifications. Dans le cas où un crontab doit être exécuté, l’utilitaire vérifie si le user qui fait tourner la commande n’est pas désactivé ou locké, puis il vérifie si celui-ci est autorisé ou non à utiliser crontab en parcourant les fichiers /var/cron/allow et /var/cron/deny .

Voici un tableau des valeurs autorisées pour les paramètres:

ChampDescriptionValeurs autorisées
minuteminutes0-59
hourheures0-23
mdayjour du mois1-31
monthmois1-12
wdayjour de la semaine0-7 (dimanche = 0 ou 7) ou le jour en anglais
userutilisateurspécifier le user (uniquement pour cron système)

Les paramètres doivent suivre une syntaxe bien spécifique:

  • * : à chaque occurence (par exemple: toutes les minutes)
  • */25 : à chaque multiple (par exemple: à chaque fois que les minutes sont un multiple de 25)
  • 5-10 : intervalle (par exemple:entre 5h et 10h, toutes les heures)
  • 5-10/3 : intervalle restreind (par exemple: entre 5 et 10h à chaque fois que les heures sont un multiple de 3, donc à 6h et à 9h)
  • 6,9 : combinaison (par exemple: à 6h et à 9h)

Si vous préférez simplifier au maximum les paramètres, vous pouvez utiliser une alternative et remplacer les asterisques par l’un des raccourcis suivant, qui exécutera le crontab selon le planning prédéfini, pour autant que la charge processeur soit basse

RaccourciDescription
@rebootexécuté une fois, au démarrage
@yearlyexécuté au nouvel an, "0 0 1 1 *"
@annually(idem que @yearly)
@monthlyexécuté au début du mois, "0 0 1 * *"
@weeklyexécuté au début de la semaine, "0 0 * * 0"
@dailyexécuté chaque jour à minuit, "0 0 * * *"
@midnight(idem que @daily)
@hourlyexécuté chaque heure, "0 * * * *"

Pour plus d’informations, comme l’emplacement des fichiers créés et les paramètres additionnels, vous pouvez consulter les manuels

$ man cron
$ man crontab

Tags:

Trackback from your site.

Leave a comment

You must be logged in to post a comment.