====== Crontab ====== ---- ===== Edition ===== ==== Editeur par défaut ==== Le choix de l'éditeur se fait lors de la première utilisation ou bien par la commande : select-editor Vérification par la commande : cat .selected_editor ==== Action sur la crontab ==== ^ Commande ^ Fonction ^ | crontab -l | visualisation de la crontab | | crontab -e | édition de la crontab | | crontab -r | suppression de la crontab | | crontab -e -u user | édition de la contab de l'utilisateur user | | sudo crontab -e | édition de la crontab root | ==== Vérifier le service ==== systemctl status cron ---- [[all:bibles:linux:crontab|Haut de page]] ===== Exemples ===== ==== Tous les jours à 4h45 ==== 45 4 * * * /root/script.pl ==== Tous les week-end à 4h50 ==== 50 4 * * 6,7 /root/script.pl ==== Tous les 1er mai à 4h50 ==== 50 4 1 5 * /root/script.pl ==== Toutes les 5 mn le soir entre 20h et 24h ==== */5 20-23 * * * /root/script.pl ==== Au redémarrage de la machine ==== === Juste après le redémarrage === @reboot /root/script.pl === 5 mn après le redémarrage === @reboot sleep 300 && /root/script.pl ---- [[all:bibles:linux:crontab|Haut de page]] ===== Modification sans éditeur ===== ==== Localisation des fichiers ==== Chaque fichier crontab porte le nom de l'utilisateur en plus de l'utilisateur root. === Ubuntu === Les fichiers se trouvent sous /var/spool/cron/crontabs === Redhat/CentOS === Les fichiers se trouvent sous /var/spool/cron ==== Création ==== cat << tagFIN > nomdufichier ... ... tagFIN taper les lignes au fur et à mesure en finissant par la dernière : tagFIN ==== Ajout ==== cat << tagFIN >> nomdufichier ... ... tagFIN taper les lignes au fur et à mesure en finissant par la dernière : tagFIN ---- ===== Dépannage ===== ==== You are not allowed to use this program (crontab) ==== * Vérifier que l'utilisateur n'est pas présent dans le fichier /etc/cron.deny * Si nécessaire ajouter le nom de l'utilisateur dans le fichier /etc/cron.allow ==== Envoi de mail ==== Il est possible de positionner la variable MAILTO en début de crontab MAILTO="" # pour éviter de recevoir des mails dans la boite de l'utilisateur MAILTO="toto@machin.fr" # pour rediriger vers une autre boite mail ==== Process zombie ==== Pour éviter la présence de process zombie en cas d'échec il convient de rediriger la sortie standard et d'erreur * * * * * /chemin/script.sh >> /var/log/monscript.log 2>&1 ==== Execution ne fonctionne pas sous cron ==== Il arrive souvent qu'un script qui fonctionne parfaitement en interactif ne fonctionne plus quand on essaye de l'exécuter via une tâche sous cron. === Variables d'environnement === Lors de l'exécution sous cron, en non interactif, l'environnement utilisateur n'est pas initialisé et donc certaines variables d'environnements ne sont pas initialisées. Par exemple la variable PATH est minimale (/usr/bin et /bin seulement). * Indiquer le chemin complet pour faire appel à un programme * Ajouter le chemin à la variable PATH dans la crontab */5 20-23 * * * PATH=; /root/script.pl === droits sudo === Pour pouvoir utiliser la commande sudo dans un script exécuté sous cron il faut pouvoir utiliser la commande sans mot de passe (voir [[all:bibles:linux:commandes:sudo|]]). Sinon le script s'exécute sans s'arrêter pour demander le mot de passe, sans erreur mais sans exécuter la commande. ==== Investigations ==== Pour debbuger un script sous cron ajouter des redirections de la console standard et d'erreur : */5 20-23 * * * /root/script.pl > /tmp/stdout.log 2>/tmp/stderr.log ---- [[all:bibles:linux:crontab|Haut de page]]