Outils pour utilisateurs

Outils du site


all:bibles:linux:crontab

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
all:bibles:linux:crontab [2024/11/20 11:45] – [Execution ne fonctionne pas sous cron] omeylhocall:bibles:linux:crontab [2025/01/28 16:42] (Version actuelle) – [You are not allowed to use this program (crontab)] omeylhoc
Ligne 1: Ligne 1:
 +====== Crontab ======
  
 +----
 +
 +===== Edition =====
 +
 +==== Editeur par défaut ====
 +
 +Le choix de l'éditeur se fait lors de la première utilisation ou bien par la commande :
 +
 +<code bash>
 +select-editor
 +</code>
 +
 +Vérification par la commande :
 +
 +<code bash>
 +cat .selected_editor
 +</code>
 +
 +==== 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 ====
 +
 +<code bash>
 +systemctl status cron
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:crontab|Haut de page]]
 +
 +===== Exemples =====
 +
 +==== Tous les jours à 4h45 ====
 +
 +<code bash>
 +45  4     * *  *  /root/script.pl
 +</code>
 +
 +==== Tous les week-end à 4h50 ====
 +
 +<code bash>
 +50  4     * * 6,7 /root/script.pl
 +</code>
 +
 +==== Tous les 1er mai à 4h50 ====
 +
 +<code bash>
 +50  4     1 5  *  /root/script.pl
 +</code>
 +
 +==== Toutes les 5 mn le soir entre 20h et 24h ====
 +
 +<code bash>
 +*/5 20-23 * *  *  /root/script.pl
 +</code>
 +
 +==== Au redémarrage de la machine ====
 +
 +=== Juste après le redémarrage ===
 +
 +<code bash>
 +@reboot           /root/script.pl
 +</code>
 +
 +=== 5 mn après le redémarrage ===
 +
 +<code bash>
 +@reboot           sleep 300 && /root/script.pl
 +</code>
 +
 +----
 +
 +[[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 <color #00a2e8>/var/spool/cron/crontabs</color>
 +
 +=== Redhat/CentOS ===
 +
 +Les fichiers se trouvent sous <color #00a2e8>/var/spool/cron</color>
 +
 +==== Création ====
 +
 +<code bash>
 +cat << tagFIN > nomdufichier
 +...
 +...
 +tagFIN
 +</code>
 +
 +taper les lignes au fur et à mesure en finissant par la dernière : tagFIN
 +
 +==== Ajout ====
 +
 +<code bash>
 +cat << tagFIN >> nomdufichier
 +...
 +...
 +tagFIN
 +</code>
 +
 +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 <color #00a2e8>/etc/cron.deny</color>
 +  * Si nécessaire ajouter le nom de l'utilisateur dans le fichier <color #00a2e8>/etc/cron.allow</color>
 +
 +==== Envoi de mail ====
 +
 +Il est possible de positionner la variable MAILTO en début de crontab
 +
 +<code bash>
 +MAILTO=""                    # pour éviter de recevoir des mails dans la boite de l'utilisateur
 +MAILTO="toto@machin.fr"      # pour rediriger vers une autre boite mail
 +</code>
 +
 +==== Process zombie ====
 +
 +Pour éviter la présence de process zombie en cas d'échec il convient de rediriger la sortie standard et d'erreur
 +
 +<code bash>
 +* * * * * /chemin/script.sh >> /var/log/monscript.log 2>&1
 +</code>
 +
 +==== 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
 +
 +<code bash>
 +*/5 20-23 * *  *  PATH=<liste:des:chemins:indispensables>; /root/script.pl
 +</code>
 +
 +=== 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 :
 +
 +<code bash>
 +*/5 20-23 * *  *  /root/script.pl > /tmp/stdout.log 2>/tmp/stderr.log
 +</code>
 +
 +----
 +
 +[[all:bibles:linux:crontab|Haut de page]]