Crontab et script perso

Bonjour,

J’ai dans /usr/local/bin fais un script pour tester ma crontab. Ce script envoi un mail avec la commande echo. Ma crontab est rédigé comme ceci (la fréquence c’était juste pour mon test.
*/1 * * * * bash mailtest.

Sauf que je reçois le message ci dessous (en lieu et place de celui choisis) : bash: mailtest: No such file or directory

Alors j’imagine que du coup cron ne sais pas regarder dans /usr/local/bin, ou alors il y un chemin à indiqué ?

Merci pour vos explications :slight_smile:

Essaye plutôt comme ceci:

*/1 * * * * /usr/local/bin/mailtest

Et au début de ton script, n’oublies pas le shebang #!/bin/bash

1 Like

ah oui c’était logique en faite :slight_smile: merci le message évolue j’ai :
/bin/sh: 1: /usr/local/bin/mailtest: Permission denied
C’est la crontab de root (si sa as une influence).

Oui cela je maitrise cette fois ci j’ai un fichier vierge avec le début de déja marqué :slight_smile:

Tout est dit: Permission denied.
Il faut lui donner les droits en exécution avec:

sudo chmod u+x /usr/local/bin/mailtest

Sa donne le résultat
/bin/sh: 1: /usr/local/bin/mailtest#: not found
Voici le contu du fichier mailtest

#!/bin/bash
echo “Corpsmail” | mail -s “Test crontab” no-reply@domaine.tld

Ajoute SHELL=/bin/bash au début de ta crontab, ou sinon passe par sh en changeant ton shebang. Cron se réfère à sh je crois bien, et sh est un lien symbolique qui pointe vers dash et non bash sur raspbian ou ubuntu par exemple.
Tu peux le vérifier avec:

ls -l /bin/sh
1 Like

Ou sinon peut-être que dans le crontab tu peux faire :

*/1 * * * * bash /usr/local/bin/mailtest

pour dire explicitement d’executer le script avec bash

(mais ce “not found” dans ton dernier message est curieux, j’ai l’impression que le probleme est ailleurs)

Merci @metyun pour la piste à suivre.
Merci @Aleks effectivement sa résoud mon problème c’est génial :slight_smile:

Merci beaucoup

1 Like

Les 2 solutions fonctionnent.
Voici pour info ce que j’utilise dans mes crontabs pour éviter ce genre de problèmes mais également les erreurs d’encodage dans les rapports mails. Basé sur ta ligne, et pour couvrir les différents cas rencontrés, ça donnerait:

SHELL=/bin/bash
TERM=xterm
PYTHONIOENCODING=UTF-8
LANG=fr_FR.UTF-8
LC_ALL=fr_FR.UTF-8
*/1 * * * * /usr/local/bin/mailtest

Dans ton cas seule la première ligne était nécessaire (ou bien le déclarer explicitement comme la solution donnée par Aleks ) , cependant les autres lignes pourront peut-être te servir le jour où tu rencontreras des soucis d’encodage avec tes tâches cron.

2 Likes