Problème avec tache planifiée (CRON)

Bonjour,

Je viens demander votre aide car je n’arrive pas à executer une tâche planifiée.
Debian ne m’est pas familier, loin de là.

J’ai créé un script /home/marc/export_veeam.sh
J’ai rendu ce fichier executable et modifié le PATH afin qu’il soit executable quelque soit l’endroit.
Lorsque je lance mon script dans une console, j’obtient le résultat excompté.
J’ai créé une tâche planifiée en modifiant crontab et y ajoutant :

46 09 * * * export_veeam.sh

Cette tâche planifié semble s’executer car je la vois dans le journal :

mai 24 09:46:01 PC-Domotique CRON[290259]: pam_unix(cron:session): session opened for user root(uid=0) by (ui>
mai 24 09:46:01 PC-Domotique CRON[290260]: (root) CMD (export_veeam.sh)
mai 24 09:46:01 PC-Domotique CRON[290259]: (CRON) info (No MTA installed, discarding output)
mai 24 09:46:01 PC-Domotique CRON[290259]: pam_unix(cron:session): session closed for user root

Et pourtant je n’ai aucun résultat. Tout ça comme si rien ne s’executait.

Quelqu’un aurait-il une idée du pourquoi de la chose ?
En vous remerciant.

Marc

Ma config :
Système d’exploitation : Debian GNU/Linux 12
Version de KDE Plasma : 5.27.5
Version de KDE Frameworks : 5.103.0
Version de Qt : 5.15.8
Version de noyau : 6.1.0-21-amd64 (64-bit)
Plate-forme graphique : X11
Processeurs : 4 × Intel® Celeron® N5105 @ 2.00GHz
Mémoire : 7,5 Gio de mémoire vive
Processeur graphique : llvmpipe

Bonjour,

c’est dans la crontab de root, si j’interprète bien l’extrait de logs ? (i.e. avec crontab -e en tant que root)

Quand tu dis que tu as modifié le PATH, tu peux nous préciser ce que tu as fait ? Là comme ça, je suspecterais que tu as modifié le PATH pour les shells interactifs (par exemple en modifiant la variable PATH dans un fichier .bashrc ou autre), mais cron n’est pas interactif, il faut que tu modifies ta variable PATH dans la crontab, par exemple

PATH="$PATH:/home/marc"
46 09 * * * export_veeam.sh

Mais sinon, si ton script doit être exécuté par le compte root, le mieux serait de le placer dans /usr/local/sbin ou /opt , et dans les crontab il vaut mieux toujours indiquer le chemin complet des commandes.

Si ça ne résout pas le soucis, à tout hasard donne nous toute la crontab (crontab -l) ainsi que le contenu du script export_veeam.sh (en masquant si besoin certaines informations privées)

1 J'aime

Bonjour et merci Sputnik93,

En effet, en déplaçant le script dans /usr/local.sbin cela fonctionne.

Je vais donc creuser les PATH.

Je trainais ce problème depuis un moment.
Merci encore.

Le mieux est tout simplement d’inclure le chemin d’accès au script sans considérer le path. Il me semble d’ailleurs que c’est ce qui est conseillé par la documentation cron (que je n’ai aps consulté).
Même si globalement pour tout ce qui est scripting, cron, il est toujours préférable d’inclure le chemin d’accès.

1 J'aime

Oui je suis bien d’accord, utiliser les chemins absolus dans tous les scripts (cron ou pas, d’ailleurs) est plus sûr. Mais on le fait pas toujours, ou bien on réutilise un (gros) script qui ne comporte pas les chemins, et dans ce cas il est plus rapide / facile (comme le côté obscur…) de renseigner la variable PATH dans la crontab.

1 J'aime