Cron
Par PlaceOweb le mardi, octobre 31 2006, 00:30 - Système - Lien permanent
Les taches planifiés (programmées) sous linux : CRON
Le manuel de cron. D'autre infos par Wikipédia au sujet de crontab.
################################################################################################# # champ valeurs autorisées ##minute 0-59 #heure 0-23 #jour du mois 1-31 #mois 1-12 (ou les noms) #jour de la semaine 0-7 (0 ou 7 est dim ou utilisez les noms) # # min heures jours mois jour_de_la_semaine de de 0 à 7 : # 0 = Dimanche # 1 = Lundi # 2 = Mardi # 3 = Mercredi # 4 = Jeudi # 5 = Vendredi # 6 = Samedi # 7 = Dimanche ################################################################################################
#minute hour day month dayofweek command # #minute . nombre entier entre 0 et 59 #hour . nombre entier entre 0 et 23 #day . nombre entier entre 1 et 31 (si le mois est spécifé, le jour doit être valide) #month . nombre entier entre 1 et 12 (ou abréviation du nom du mois) #dayofweek . nombre entier entre 0 et 7, 0 ou 7 représentant le dimanche (ou l'abréviation du jour de la semaine)
Attention, il me semble que l'on puisse affecter des variables à la volée dans le cron.
maDate=$(date +%d-%m-%Y-%H-%M) 59 23 * * * /monProgrammeDeSauvegarde.sh >$maDate.log 2>/dev/null
Par contre il semble impossible d'exécuter une commande tel que :
leResultat=`echo "Hello"` 59 23 * * * /monProgrammeDeSauvegarde.sh >`date +%Y-%m-%d`.log
Pour recevoir par mail tous les résultats destinés aux sorties standard (1) et erreur (2), vous devez rajouter
MAILTO=monMail@monDomaine.com
Aussi un programme lancé en ligne de commande ou via CRON peut avoir des PATH différents et donc ne plus trouver les bons programmes à lancer, par exemple :
con iptables: command not found
#* * * * * echo "PATH:$PATH" # en ligne de commande : /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # depuis le CRON : /usr/bin:/bin
Bien que Esa Turtiainen en parle dans son article PATH Mini-HowTo :
cron est lancé par les scripts de démarrage mais il change son PATH en une valeur assez étrange :
/usr/bin:/binn:/sbin:/bin:/usr/sbin:/usr/bin
IL S'AGIT SUREMENT D'UN BOGUE DANS CRON. Il s'agit en fait du PATH de init (/usr/bin:/bin) qui est copié ici, mais sans le 0 terminal (chaîne en convention C - NdT)! Ce bogue n'existe pas sur tous les systèmes.
Dans la crontab, on peut définir un PATH spécifique pour l'exécution des commandes. Pour la Debian 1.3, il s'agit de :
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
De cette façon, le PATH de crond n'est jamais utilisé dans les programmes utilisateurs. Tous les scripts de /etc/cron.* obtiennent par défaut le PATH de la crontab. Celui ci est utilisé même si le programme n'est pas exécuté en tant que root.
La seule alternative semble de définir les PATH dont vous avez besoin :
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin