Académique Documents
Professionnel Documents
Culture Documents
1 2 3 4 5 6
Chap. 7 1/3
Ici tous les jours à 4h02 du matin run-parts /etc/cron.daily est exécuté. Le script run-parts accepte
en paramètre un répertoire et exécute tous les programmes présents dans ce répertoire.
$ ls cron.daily/
00-logwatch 0anacron makewhatis.cron slocate.cron
00webalizer logrotate rpm tmpwatch
Parmi les programmes exécutés, remarquez logrotate qui permet d’effectuer des sauvegardes et de
renommer des fichiers logs et des journaux du système afin que ceux-ci ne deviennent pas inexploitables
à cause de leur taille. Le programme tmpwatch est chargé de nettoyer le système des fichiers inutilisés
(dans /tmp par exemple).
Enfin, le répertoire /etc/cron.d contient des crontabs supplémentaires.
5. Contrôle d’accès
Vous pouvez contrôler l’accès à la commande crontab par utilisateur avec les fichiers /etc/cron.allow et
/etc/cron.deny.
Si cron.allow est présent, seuls les utilisateurs qui y sont explicitement indiqués peuvent utiliser at.
Si cron.allow est absent, cron vérifie la présence d’un fichier cron.deny. Tous les utilisateurs n’y
étant pas sont autorisés à utiliser cron. S’il est vide la commande cron est autorisée pour tout le
monde.
Si les deux fichiers sont absents, seul root peut utiliser cron.
Avec at
1. Présentation
La commande at et les commandes associées permettent une gestion des traitements batchs.
Contrairement à la crontab les modifications sont volatiles : elles sont perdues lorsque la session est
terminée. C’est à vous de placer la liste des commandes dans un éventuel fichier et de le charger au
besoin via les scripts de votre profil.
Pour que at fonctionne le service atd (at daemon) doit fonctionner.
$ ps -ef | grep atd
at 7988 1 0 21:05 ? 00:00:00 /usr/sbin/atd
2. Formalisme
Pour simplifier, il y a deux moyens d’utiliser at :
En lui passant de manière interactive une ligne de commande,
En lui passant un fichier exécutable contenant les commandes à exécuter.
Dans les deux cas, vous devez fournir à at une heure d’exécution. Le formalisme de cette heure est assez
souple.
Pour programmer l’exécution d’une ligne de commande à 21h20 de manière interactive :
$ at 21:20
warning: commands will be executed using /bin/sh
at> echo salut
at> <EOT>
job 4 at 2008-05-08 21:20
Après avoir saisi la ou les commandes à exécuter à 21h20, appuyez sur [Entrée] et sur une ligne vide
appuyez sur [Ctrl] D (fin de saisie). La commande at confirme la programmation de la commande.
Pour programmer l’exécution d’une commande (script ou binaire) à 21h25 :
$ at -f /home/seb/test.sh 21:25
warning: commands will be executed using /bin/sh
job 6 at 2008-05-08 21:25
Heure
L’heure peut être formatée ainsi :
HHMM ou HH:MM.
L’heure peut être au format 12 ou 24h. Au format 12 heures, vous pouvez préciser AM (matin) ou
PM (aprèsmidi).
Chap. 7 2/3
Midnight (minuit), noon (midi), teatime (16h00, typiquement anglais).
MMJJAA, MM/JJ/AA ou JJ.MM.AA pour une date précise.
Now : maintenant.
+ n minutes/hours/days/weeks : l’heure courante auquel on ajoute n
minutes/heures/jours/semaines.
Si l’heure précisée est inférieure à l’heure actuelle, la commande est exécutée le lendemain.
$ at 21:30 09.05.2008
warning: commands will be executed using /bin/sh
at> echo salut !
at> <EOT>
job 9 at 2008-05-09 21:30
$ at now + 2 days
warning: commands will be executed using /bin/sh
at> echo dans deux jours
at> <EOT>
job 10 at 2008-05-10 21:29
Il existe aussi la commande batch qui ne prend pas d’heure. Elle exécute la commande dès que la charge
de la machine l’autorise. L’heure peut être précisée, dans ce cas elle sera considérée comme « à partir de
cette heure, dès que possible ».
3. Contrôle des tâches
La commande atq (at queue) permet de lister les tâches programmées :
$ atq
10 2008-05-10 21:29 a seb
9 2008-05-09 21:30 a seb
Les jobs (tâches) sont placées dans le répertoire /var/spool/atjobs, à raison de un exécutable par tâche.
# ls -l /var/spool/atjobs/
-rwx------ 1 seb users 5620 mai 8 21:29 a000090133cf92
-rwx------ 1 seb users 5628 mai 8 21:30 a0000a0133d531
La commande atrm permet de supprimer une tâche :
$ atrm 10
$ atrm 9
$ atq
Chap. 7 3/3