[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: