crontab

Mise à jour: 22 decembre 2012
Version: 1.0
Author: Jean-Louis Bicquelet-Salaün
Location: http://jlbicquelet.free.fr
Copyright: (c) 2012-2013 Jean-Louis BICQUELET

crontab

principes

Le role de la crontab est de déclencher des actions à des dates préprogrammées. Il s'agit sous AIX d'un programme qui est lancé par l'inittab, c'est à dire au démarrage de la machine et en moderespawn c'est à dire que le processus se relance automatiquement si il est tué.

Aux commandes cron qui sont éxecutés régulièrement, s'ajoutent les commandes at qui correspondent àdes commandes éxécutées poncuellement.

fichiers et répertoires associés

Le répertoire contenant les tables se trouve dans /var/spool/cron . Il existe deux sous-répertoires atjobs et contabs . Dans ces sous-répertoires on trouve un fichier parutilisateur qui correspond aux commandes qui seront exécutées par son compte à l'heure donnée.

Utilisation

syntaxe de la contab

Le fichier cron à une syntaxe relativement simple. Il y a une commande par ligne. Si la ligne commanece apr un # c'est que la ligne est commentée.

A chaque jour, heure , minute correspond une commande. L'ordre des colonnes fixant le moment concerné. Le tableau qui suit pet être rajouté (puisque c'est un commentaire) comme mémo dans vos contables.

fichier crontab.txt

#*                       commandes à exécuter#-    -    -    -    -
#¦    ¦    ¦    ¦    +-----  jour de la semaine (0...6 avec 0=Dimanche)
#¦    ¦    ¦    +----------  mois (1...12)
#¦    ¦    +---------------  jour (1...31)
#¦    +--------------------  heure (0...23)
#+-------------------------  minute (0...59)
	

On peut ainsi fixer un moment donné. Un certain nombre de caractère ont des significations bien précises:

caractère signification
* toutes les valeurs possibles
- indique un intervalle 10-12 (de 10 à 12)
, indique une liste de valeurs
% dans la ligne de commande indique un retour à la ligne

exemples de lignes de cron

ligne dans la cron signification
~* commande toutes les minutes
~0,5,10,15,20,25,30,35,40,45,50,55 commande toutes les 5 minutes
~0,5,10,15,20,25,30,35,40,45,50,55 13-15 * commande toutes les 5 minutes de 13 heure à 15 heure
~00 23 * commande tous les jours à 23 heures
~15 commande toutes les heures au quart
~59 23 1 commande tous les premiers du mois à 23h59
~30 21 5 commande tous les vendredi à 21h30
~10 23 20-25 commande du 20 au 25 du mois à 23h10
~0 0 28-31 commande du 28 au 31 du mois à minuit
~0 0 * commande tous les jours à minuit
~0 0 0 commande toutes les semaines
~0 0 1 commande tous les mois
~0 0 1 1 * commande tous les an

lancer une commande

On indique u bout de la ligne la commande à executer. Le résultat de la commande doit être redirigée vers un fichier log ou vers le device /dev/null pour ne rien avoir affiché dans la console.

On peut rediriger les flux aussi bien de sortie que d'erreur

Exemple:

30 04   5 /usr/local/sbin/brs_savevg >>/usr/local/Disaster/bcrs.log 2>>/usr/local/Disaster/bcrs.log00 00 *   /soft/nmon/bin/nmon.ksh > /dev/null 2>&101 5 *   /usr/lpp/diagnostics/bin/run ssa ela 1>/dev/null 2>/dev/null0     /usr/lpp/diagnostics/bin/run ssa healthcheck 1>/dev/null 2>/dev/null

commande cron

La commande crontab permet de gérer les crontables.

Par défaut la commande crontab s'excute pour le compte courrant. Il est possible de lancer crontabpour un autre utilisateur en utilisant l'option -l.

crontab -l cft
~00 5    1-6 /soft/cft/filusr/CFTSTART~30 18   1-6 /soft/cft/filusr/CFTSTOP

Cet exemple monte le démarrage de CFT à 5 heure du matin et son arrêt à 18h30.

On peut afficher une table:

crontab -l

On peut éditer une table :

crontab -e

On peut supprimer la crontable d'un utilisateur:

crontab -r user

logs

Les logs d'execution de la contab se trouvent dans -/var/adm/cron/log- et ressemble à ceci:

topx      : CMD ( /soft/perl/maj.pl >/dev/null 2>&1 ) : PID ( 3424414 ) : Fri Jan 27 10:30:00 2012
root      : CMD ( /usr/lpp/diagnostics/bin/run_ssa encl healthcheck 1>/dev/null 2>/dev/null ) : PID ( 3846372 ) : Fri Jan 27 10:30:00 2012Cron Job with pid: 3846372 Successful
Cron Job with pid: 3424414 Successful
Cron Job with pid: 3891344 Successful
topx      : CMD ( /soft/perl/maj.pl >/dev/null 2>&1 ) : PID ( 1282128 ) : Fri Jan 27 10:35:00 2012
Cron Job with pid: 1282128 Successful
topx      : CMD ( /soft/perl/maj.pl >/dev/null 2>&1 ) : PID ( 3756278 ) : Fri Jan 27 10:40:00 2012
Cron Job with pid: 3756278 Successful
topx      : CMD ( /soft/perl/maj.pl >/dev/null 2>&1 ) : PID ( 2932908 ) : Fri Jan 27 10:45:00 2012
Cron Job with pid: 2932908 Successful
topx      : CMD ( /soft/perl/maj.pl >/dev/null 2>&1 ) : PID ( 3891364 ) : Fri Jan 27 10:50:00 2012
Cron Job with pid: 3891364 Successful

cron et changement d'heure

En France on est soumis au changement d'heure. Si votre serveur gère le changement d'heure hiver/été, les tâches Cron entre 02h00 et 02h59 le dernier dimanche du mois de mars ne seront pas exécutées (on passe en effet de 2h à 3h). À l'inverse, les tâches Cron entre 02h00 et 02h59 du dernier dimanche du mois d'octobre seront exécutées deux fois (car on passe de 3h à 2h).

Pour savoir si vous changer d'heure examinez la varaible TZ.

Si elle est avec une time zone simple il n'y a pas de changement d'heure.Sinon, il y en a.

echo $TZ
NFT-1DFT,M3.5.0/02:00,M10.5.0/03:00

Dans ce cas si on change d'heure.

commande at

La commande at permet de lancer un batch à une heure ultérieure.

La syntaxe pour lancer un batch est du style:

at 10.19
batch < !
date > /root/log.txt
!
Job root.1327655940.a will be run at Fri Jan 27 10:19:00 NFT 2012.
crontol-D (la séquence de touche)

Pour visualiser les commandes qui sont mises dans la queue des at on utilise atq.Un fichier correspondant est inséré dans le répertoire /var/spool/cron/atjobs .

atq
root.1327742340.a       Sat Jan 28 10:19:00 NFT 2012

Pour supprimer un job on utilise atrm avec le nom du job ou de l'utilisateur (poursupprimer tous ses jobs).

atrm root.1327742340.a        

atrm root The root.1327742340.a at file is deleted.