(section rédigée par C. Boudjnah)
Utilisez le package anacron
Pour l'utiliser créer un fichier /etc/anacrontab :
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
1 5 cron.daily run-parts /etc/cron.daily
Ce fichier dit « Exécute tous les jours (1), cinq (5) minutes après le
demarrage la commande run-parts /etc/cron.daily. Et enregistre le log dans
le fichier /var/spool/anacrontab/cron.daily ».
Placer si nécessaire l'invocation d'anacron dans un fichier de démarrage
(probablement dans /etc/rc.d/init.d/ :
#!/bin/sh
#
# chkconfig: 3 95 30
# description: Anacron
source /etc/rc.d/init.d/functions || {
echo "Il apparait que votre distribution RedHat et pas configurez
correctement. /etc/rc.d/init.d/functions manquans" ; exit 1 }
wich anacron &> /dev/null || {
echo "Error anacron isn't in \$PATH ; exit 1 } && {
ANACRON=`wich anacron`}
case "$1" in
start)
echo -n "Starting Anacron: "
$ANACRON
echo "Done."
;;
stop)
echo -n "Shutting down Anacron: "
killproc anacron
echo "Done."
;;
status)
status anacron
;;
*)
echo "Usage: anacron {start|stop|status}"
exit 1
esac
exit 0
Le rendre exécutable par chmod +x /etc/rc.d/init.d/anacron. Puis
(sous Debian) faites chkconfig --add anacron. Vous pouvez vérifier votre
config par chkconfig --list anacron. Sous les autres distributions il
suffira de tirer un lien symbolique dans le répertoire du runlevel
approprié, par exemple :
cd /etc/rc.d/rc3.d ln -s ../init.d/anacron S98anacron
À noter que dans le cron j'utilise run-parts pour lancer plusieurs fichiers dans un répertoire. Il et malheureusement pas disponible sur toutes les distributions mais il et possible de faire un petit script qui fasse la meme chose :
#!/bin/sh
DIR=$@
for chkdir in $DIR;do
echo $chkdir
if [ -d $chkdir ];then
find $chkdir -type 'f' -perm '+a=x' -maxdepth 1 | xargs -n1
else
echo "$chkdir ne semble pas present"
fi
done
Le rendre exécutable et le placer en /usr/local/bin/run-parts