J'ai un script qui fonctionne lorsque je l'exécute à partir de la ligne de commande, mais lorsque je le planifie avec des cron
erreurs, il ne parvient pas à trouver des fichiers ou des commandes. Ma question est double:
Lorsque je planifie un travail cron avec
crontab -e
, utilise -t-il mon ID utilisateur comme base de ses autorisations? Ou utilise-t-il un identifiant d'utilisateur cron d'une certaine sorte et ses autorisations associées?Lorsqu'un travail cron est lancé, quel est le répertoire de travail? Est-ce le répertoire dans lequel je spécifie le script à exécuter ou un autre répertoire?
Voici mon travail cron:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Voici le script actuel:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Voici les erreurs que je reçois lorsque je visualise le mail
message produit par cron
:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
Il ne peut pas trouver le fichier template.txt
mais il réside dans le même répertoire que le script. Il ne peut pas non plus fonctionner ssmtp
, mais je peux en tant qu'utilisateur. Qu'est-ce qui me manque pour que cela fonctionne correctement?
cron
le sienPATH
ou puis-je vérifier mon utilisateurPATH
? J'ai configuré ssmtp pour avoir le sienuser
et l'wheel
autorisation, pensant que cela permettrait à quiconque de l'utiliser (y compris cron). Si cela peut aider, je suis sur CENTOS 6.2