Re: comprendre mon crontab
Debian User a écrit le 26/07/05 22:40 :
Voici mon /etc/crontab:
---------------
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || run-parts
--report /etc/cron.daily
47 6 * * 7 root test -x /usr/sbin/anacron || run-parts
--report /etc/cron.weekly
52 6 1 * * root test -x /usr/sbin/anacron || run-parts
--report /etc/cron.monthly
-----------------------------------
[ Je cite dans le désordre pour organiser ma réponse. ]
> Et en plus j'ai pas /usr/sbin/anacron ????? Donc cron.d ne fait rien
> c'est ça?
Si si car le || est un OU (exclusif)
test -x /usr/sbin/anacron || run-parts --report /etc/cron.daily
signifie "vérifie si /usr/sbin/anacron est exécutable et *s'il ne l'est
pas* exécute run-parts..."
Si tu n'as pas anacron alors les scripts seront bien exécutés par
run-parts (pour autant que ton PC soit allumé aux heures précisées dans
ton crontab).
Comme tu affirmes dans un autre message que le PC n'est pas toujours
allumé, il vaut mieux installer anacron.
Je suppose que c'est le cas dans la suite de ma réponse.
Je comprends pas pourquoi il fait un test sur l'existence
de /sbin/anacron (-x fichier Vrai si le fichier existe et est
exécutable),
Supposons que ton PC soit resté éteint le WE.
Tu l'allumes lundi matin, à 6h10.
Anacron constate que les scripts de /etc/cron.daily n'ont pas été
exécutés depuis plus de 1 jour (délai spécifié dans /etc/anacrontab) et
les exécute.
Un quart d'heure plus tard, à 6h25 d'après ton crontab, cron se
réveille. S'il n'y avait pas ce test sur anacron, cron relancerait les
scripts exécutés juste avant par anacrontab ce qui est franchement
inutile. Avec ce test, cron se dit qu'anacron est là, lui fait confiance
et se rendort.
(Il y a peut-être une meilleure raison à l'existence de ce test mais je
ne la connais pas !)
Ce fonctionnement me semble idéal pour une machine qui est *éteinte*
chaque jour.
*Je me demande* s'il n'y a pas des cas très particuliers où il pourrait
être utile d'enlever ces tests de son crontab pour ne laisser que les
"run-parts...". *Je pense* que, contrairement à cron, anacron n'est pas
un démon : il est exécuté au démarrage de la machine puis s'arrête.
Supposons que tu allumes ta machine tous les lundis matins pour ne
l'éteindre que le jeudi soir et que les vendredis, samedis et dimanches
tu ne l'allumes que pendant deux heures. Ces jours-là, anacron lancera
les scripts de /etc/cron.daily au démarrage; mais les mardis, mercredis
et jeudis ils ne seront pas exécutés du tout. A vérifier !
pour les daily, monthly et weekly et pas pour les hourly.
Parce que anacron travaille en jours : il lance les scripts qui n'ont
pas été exécutés depuis x jours et n'est donc pas utile pour des scripts
qui doivent être exécutés toutes les heures.
Dans /etc/cron.hourly y a juste .placeholder qui est la juste pour que
le repertoire reste là et ne soit pas effacer.
Chez moi aussi. Je ne parviens d'ailleurs pas à imaginer quelle tâche
devrait absolument être exécutée toutes les heures sur ma machine de bureau.
Peut-être que sur un gros serveur on pourrait imaginer des opérations
horaires de nettoyage ?
--
Eddy
"La notion de passoire est indépendante de la notion de trou."
Les Shadoks
Reply to: