======CronTab====== Juste un petit mémo. ===== Notation ===== minute heure jour(1-31) mois(1-12) journée(0=dimanche, 1=lundi ... 6=samedi, 7=dimanche) * * : à chaque unité * 5,8 : les unités 5 et 8 * 2-5 : les unités de 2 à 5 * */3 : toutes les 3 unités * 10-20/3 : toutes les 3 unités, entre la dixième et la vingtième (10, 13, 16, 19) Raccourcis * @reboot * @yearly ou @annually * @monthly * @weekly * @daily * @midnight * @hourly ===== Mail ===== Le cron envoie des mails au propriétaire de la commande lorsqu'une tache génère du texte en sortie standard. J'ai beau remplir le fichier **/etc/aliases** pour dire d'envoyer les mails du root (par exemple) vers mon mail perso mais rien n'y fait. Il faut donc éditer le fichier **/etc/crontab** et rajouter la variable MAILTO=toto@domain.com ===== Editer le cron ===== La commande suivante permet d'éditer le cron crontab -e La commande suivante permet d'afficher le contenu du cron crontab -l ==== Editeur par défaut ==== Par défaut, le cron s'éditait avec vim, mais de nos jours il s'édite avec NANO ... En faite, cron utilise la variable $EDITOR. En 1er lieu, essayez la méthode classique : $ update-alternatives --config editor Il existe 4 choix pour l'alternative editor (qui fournit /usr/bin/editor). Sélection Chemin Priorité État ------------------------------------------------------------ 0 /bin/nano 40 mode automatique 1 /bin/ed -100 mode manuel 2 /bin/nano 40 mode manuel 3 /usr/bin/vim.basic 30 mode manuel * 4 /usr/bin/vim.tiny 10 mode manuel Appuyez sur pour conserver la valeur par défaut[*] ou choisissez le numéro sélectionné : Sinon essayez cette méthode ou il suffit de recréer le lien pour remettre **vim** comme éditeur. rm /etc/alternatives/editor ln -s /usr/bin/vim /etc/alternatives/editor Si ça ne marche toujours pas, ajoutez dans votre **~/.bash_profile** ceci export EDITOR=vim ===== Sortie .. ===== Pour ne pas recevoir de message par mail ou dans les logs la sortie standard d'un script, il suffit d'ajouter **> /dev/null** 00 22 * * * /home/users/script > /dev/null La méthode précédente laisse passer la sortie d'erreur dans les log. Si vous ne voulez pas non plus avoir de trace d'erreur, ajouter **2>&1** qui permet de rediriger la sortie d'erreur sur la sortie standard qui elele même sera redirigé vers le néant. 00 22 * * * /home/users/script > /dev/null 2>&1 Si ne voulez que les erreurs dans un log, redirigé la sortie d'erreur dans un fichier de log 00 22 * * * /home/users/script > /dev/null 2> /var/log/fichier.log ===== Variable ===== Pour passer la date dans un nom de fichier à créer * * * * * /bin/echo `date +\%Y\%m\%d_\%H\%M\%S` >> /tmp/crontab.log Notez que les **%** sont échappés par un **\** Sinon on peut définir une variable DATEVAR=date +%Y%m%d_%H%M%S * * * * * /bin/echo $($DATEVAR) >> /tmp/crontab.log