Apparence
Uubu.fr

Les systèmes Linux, l’open source, les réseaux, l’interopérabilité, etc.
« Il vaut mieux viser la perfection et la manquer que viser l’imperfection et l’atteindre. » (Bertrand Arthur William RUSSEL)
22 mai 2010

Linux           Planification des tâches


crontab

crontab

Installer/Désinstaller des tâches cron

   crontab est utilisé pour installer, désinstaller ou lister les tables utilisées par cron. Chaque utilisateur peut avoir son propre crontab. Ces fichier sont maintenus dans /var/spool/cron/crontab.

  Si le fichier /etc/cron.allow existe, l'utilisateur doit y être listé pour utiliser cette commande. si /etc/cron.deny existe, l'utilisateur ne doit pas y être listé pour pouvoir utiliser cette commande.

OPTIONS

-u permet de spécifier l'utilisateur, sinon crontab utilise le crontab de l'utilisateur courant
-l affiche les tâche installée
-r supprimer le crontab courant
-e  permet d'éditer le crontab courant
-i modifie l'option -r pour demander confirmation avant de supprimer

Fichiers crontab

   Certaines variable sont déjà paramètrés: SHELL vaut /bin/sh, et LOGNAME et HOME sont paramétrés avec /etc/passwd. si MAILTO est paramétré, cron peut envoyer un mail.

  Cron supporte le module pam-env, et charge l'environnement spécifié par /etc/environement et /etc/security/pam_env.conf.

le format de cron chaque ligne a 5 champs suivis par une commande, suivi par un le caractère newline ('\n')
le format de crontab Il est identique mais il inclue un champs pour spécifier l'utilisateur pour la commande.


champs___________valeurs permises
minute______________0-59
heure_______________0-23
jour du mois________1-31
mois________________1-12 ou le nom
jour de la semaine__0-7 ou le nom

- Un champs peut être un * qui signifie toutes les valeurs.
- Les plages de nombre sont permise ex: 8-11
- Les listes sont permises ex: "1,2,5,9", "0-4,8-12"
- des 'pas' peuvent être spécifié avec la plage. ex: "0-23/2" signifie 0,2,4,6,8,10,12,14,16,18,20,22.
- Le jour d'une exécution peut être spécifiée par 2 champs: jour du mois et jours de la semaine.
30 4 1,15 * 5 cette commande sera exécutée à 4h30 le 1er et le 15 de chaque mois, plus tous les vendredi
- Au lieu des 5 champs, un de ces 8 termes spécial peut être utilisé:

        @reboot Lance une fois, au démarrage
        @yearly Lance une fois par an, "0 0 1 1 *"
        @annually idem
        @monthly Lance une fois par mois "0 0 1 * *"
        @weekly Lance une fois par semaine "0 0 * * 0"
        @daily Lance une fois par jour "0 0 * * *"
        @midnight idem
        @hourly lance une fois par heure "0 * * * *"

Exemples

modifier le shell utilisé
SHELL=/bin/bash
envoyer un mail a paul
MAILTO=paul
lancer 5 minute après minuit, chaque jour
5 0 * * * $HOME/bin/daily.job ›› $HOME/tmp/out 2›&1
lancer à 14h14 le premier de chaque mois
15 14 1 * * $HOME/bin/monthly
lancer à 22h les jours de la seamine
0 22 * * 1-5 mail -s "It's 10pm" joe%Joe,%%Where are your kids ?%
23 0-23/2 * * * echo "run 23 minutes after midn, 2am, 4am ..., everyday"
5 4 * * sun echo "run at 5 after 4 every sunday"