Je rencontre des problèmes pour appeler un script bash en tant que cronjob
qui ne s'exécutera pas.
Voici pour éliminer certaines sources d'échec possibles:
Sudo crontab -e
0 4 * * * bash ~/nightly_backup.sh
/home/myuser/nightly_backup.sh
Sudo bash ~/nightly_backup.sh
fonctionne très bienfswebcam -r ...
)Qu'est-ce que je fais mal?
De plus: en regardant aujourd'hui si le script a été exécuté, je vois le syslog qui dit ce qui suit:
Feb 7 04:00:01 localhost CRON[7767]: (root) CMD (bash ~/nightly_backup.sh)
Feb 7 04:00:01 localhost CRON[7764]: (CRON) info (No MTA installed, discarding output)
Feb 7 04:00:03 localhost CRON[7765]: (CRON) info (No MTA installed, discarding output)
Le problème de base semble être: L’utilisation de ~
, qui fait référence à la home
de l’utilisateur actuel.
Plus de détails sur le problème:
~
est /home/myuser
(myuser
home).~
est /root
(root
home).Le fichier n'étant pas dans /root/nightly_backup.sh
cron
ne peut pas l'exécuter.
Solution:
Remplacer:
0 4 * * * bash ~/nightly_backup.sh
Avec:
0 4 * * * /home/myuser/nightly_backup.sh
Notez que vous devez vous assurer que le script shell est exécutable en lançant la commande suivante (une fois):
chmod +x /home/myuser/nightly_backup.sh
Remarque: concernant votre autre question
Que signifie "pas de MTA installé, sortie rejetée"?
Il a été répondu ici
En bref: Cela se produit parce que vos tâches cron produisent une sortie, puis le démon cron tente de vous envoyer cette sortie par courrier électronique, alors que vous n'avez pas de courrier. service installé sur votre système.
Vous pouvez le résoudre par l’une des méthodes suivantes (plus d’informations dans ici )
logger
et vous la verrez dans les journaux syslog
.