![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
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.
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.
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 |
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 |
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
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
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
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.
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.