3 votes

cronjob ne peut pas trouver le fichier script.

J'ai un script ( buphomebasis.sh )qui utilise rsync pour faire des sauvegardes depuis mon répertoire personnel. Son contenu est :

sudo rsync -avz /home /media/myname/mybackupdsk

Cela fonctionne très bien, juste en invoquant ce script depuis la ligne de commande. Maintenant, j'ai créé un cronjob ( backup.sh ) ; son contenu est :

SHELL=/bin/bash
45 5 * * * buphomebasis.sh

Cela devrait faire une sauvegarde tous les jours à 5 heures et 45 minutes du matin. Les deux scripts sont dans ma home/myname/cronjobs/ répertoire, mais en exécutant backup.sh donne lieu au message d'erreur suivant :

cronjobs/backup.sh: regel 23: 45: opdracht niet gevonden

ou en anglais :

cronjobs/backup.sh: line 23: 45: command not found

Quelqu'un peut-il m'aider à trouver ce qui ne va pas/manque dans ce cronjob ?

3voto

Joe the Person Points 5090

Utilisez le chemin complet. Cron n'hérite pas de votre chemin, donc vous devez utiliser des chemins complets pour qu'un script soit correctement exécuté dans Cron.

Ainsi, vous auriez une entrée cron comme suit :

45 5 * * * /home/myname/cronjobs/buphomebasis

0voto

m_krsic Points 529

Utilisez-vous sudo crontab -e ou simplement crontab -e lorsque vous effectuez vos changements ? L'un l'ajoutera à la crontab de votre utilisateur, l'autre à celle de root.

Le chemin complet ne ferait pas de mal non plus

0voto

NerdOfLinux Points 3470

Note : Remplacer toutes les occurrences de $USER avec votre nom d'utilisateur réel.

Vous devez utiliser le chemin complet, sinon le travail Cron ne pourra pas le trouver. Vous devez mettre quelque chose comme

SHELL=/bin/bash
45 5 * * * /home/$USER/buphomebasis.sh

dans votre crontab pour qu'il soit exécuté. Vous devez également vous assurer que le script est exécutable, donc assurez-vous d'avoir #!/bin/bash au début de votre script. Ensuite, rendez-le exécutable avec chmod +x /home/$USER/buphomebasis.sh .

Je vous recommande d'écrire votre script comme :

#!/bin/bash
rsync -avz /home /media/myname/mybackupdsk >> /home/$USER/backup.log

afin que vous puissiez voir si rsync a des erreurs. Aussi, assurez-vous de le mettre dans le root crontab, afin qu'il puisse être exécuté sans mot de passe, sinon il échouera. Vous pouvez modifier la crontab de la racine avec

sudo crontab -u root -e

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X