Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 31/07/2013, à 10:21

friedmann

Shell ne s’exécute pas avec crontab

Bonjour à tous,

J'ai un gros souçis que je n'arrive pas à résoudre et je me casse la tête depuis 2 jours.

J'ai un server avec Ubuntu  12.04 server.

J'ai creer un shell qui monte un disque externe, lance un backup avec backup-manager et demonte le disque externe.

Le script fonctionne à merveille, sauf quand on le lance depuis crontab.

J'ai consulté les logs, mais je n'ai aucune erreur.

Je ne comprend pas du tout.

Pour tester j'ai modifié mon script pour le faire juste monter le disque externe mais même ça ne fonctionne pas.

Voila le shell :

#!/bin/sh
#PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/script
#script

/bin/mount /dev/sdb1 /media/backup

test -x /usr/sbin/backup-manager || exit 0
/usr/sbin/backup-manager

/bin/umount /media/backup

Et la ligne inséré dans crontab : 

 28 10 * * * /script/mount.sh

Hors ligne

#2 Le 31/07/2013, à 10:55

Shanx

Re : Shell ne s’exécute pas avec crontab

friedmann a écrit :
 28 10 * * * /script/mount.sh

Ça, c’est bizarre. Dans quel répertoire est ton script ? Il ne serait pas plutôt dans ~/script/mount.sh ? (~ est un alias pour /home/ton_nom_d'utilisateur)


Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#3 Le 31/07/2013, à 10:56

friedmann

Re : Shell ne s’exécute pas avec crontab

Au début je l'avais placé dans mon dossier utilisateur, mais ça ne fonctionnai pas, je l'ai ensuite mis directement à la racine, mais ça ne fonctionne pas non  plus.

Hors ligne

#4 Le 31/07/2013, à 10:59

Shanx

Re : Shell ne s’exécute pas avec crontab

Là il n’est pas à la racine, il est dans le répertoire /script. Peux-tu ouvrir un terminal et nous donner le retour de cette commande :

ls -l /script

?


Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#5 Le 31/07/2013, à 11:01

friedmann

Re : Shell ne s’exécute pas avec crontab

-rwxr-xr-x 1 root root 226 juil. 31 11:33 mount.sh

Enfaite je parlais du dossier script, pas du fichier mount.sh.

J'ai déplacé le dossier script de mon dossier utilisateur vers la racine

Hors ligne

#6 Le 31/07/2013, à 11:06

Shanx

Re : Shell ne s’exécute pas avec crontab

C’est franchement déconseillé de toucher à la racine. Je ne peux que te conseiller de remettre le script/ dans ton répertoire personnel, le problème ne vient pas de là. Tu peux essayer de modifier la ligne du crontab par :

 28 10 * * * sh ~/script/mount.sh

EDIT : il y a aussi cette ligne qui me perturbe :

#PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/script

Si je comprend bien, c’est pour donner à l’utilisateur le droit de faire les opération du script sans être root. Bien que je n’ai jamais utilisé ça, je ne comprend pas pourquoi cette ligne est commentée. De plus, dans la doc on peut lire ça :

Selon les commandes à exécuter, vous devrez changer la variable PATH des utilisateurs ayant les droits root en mettant la ligne suivante au dessus de leurs fichiers crontab :

PATH=/usr/sbin:/usr/bin:/sbin:/bin

Du coup, je ne sais pas trop où tu devrais placer cette ligne.

Dernière modification par Shanx (Le 31/07/2013, à 11:11)


Mes randos : grande traversées des Alpes, de l'Islande, de la Corse, du Japon (en vélo), etc.
Traversée des États-Unis à pied

Hors ligne

#7 Le 31/07/2013, à 11:31

friedmann

Re : Shell ne s’exécute pas avec crontab

J'ai commenté la phrase car je l'ai mise a l'origine pour tester mais comme ça n'a rien changé je l'ai commenté.
Au lieu de la supprimé et de la réinscrire a la place j'ai juste a commenté ou decommenté.

Je vais tester ce que tu m'a dis mais je pense pas que ça va fonctionner vu que j'avais déjà tenter en mettant le chemin complet du dossier utilisateur .

Hors ligne

#8 Le 31/07/2013, à 12:57

friedmann

Re : Shell ne s’exécute pas avec crontab

J'ai tenter en modifiant la commande et en déplacant le dossier script dans l'utilisateur mais ça ne fonctionne pas.

C'est pas logique cette histoire.

Hors ligne

#9 Le 31/07/2013, à 13:43

Neosnow

Re : Shell ne s’exécute pas avec crontab

Hello,

Quelle commande as-tu utilisé pour éditer ton crontab ?

Sinon, en lançant ton script en mode debug et en regardant les logs, on pourrait avoir un peu plus d'infos sur ce qu'il se passe.
Pour info :
Activer le mode debug

#!/bin/sh
set -x

/bin/mount /dev/sdb1 /media/backup

test -x /usr/sbin/backup-manager || exit 0
/usr/sbin/backup-manager

/bin/umount /media/backup

set +x

Les logs de cron se trouvent dans syslog

grep CRON /var/log/syslog

Hors ligne

#10 Le 31/07/2013, à 13:48

friedmann

Re : Shell ne s’exécute pas avec crontab

J'ai trouver l'erreur.

Un truc tout bête mais sur aucun tuto de tous ce que j'ai lu, ne mentionne le fait que pour editer crontab il faille utiliser la commande sudo.

Bon ben finalement c'était tout bête mais ça m'aura coûté 10 heures de travail smile

Hors ligne

#11 Le 31/07/2013, à 15:03

Neosnow

Re : Shell ne s’exécute pas avec crontab

En fait, il n'y a pas besoin d'utiliser sudo pour le crontab étant donné qu'il est relatif à l'utilisateur qui l'exécute. Ainsi, en utilisant crontab avec sudo, tu édites le crontab de root. Alors que sans sudo, c'est ton propre crontab que tu édites.

Dans ton cas, ça a résolu le problème car ton script appartient à root (les commandes que tu utilises ont, par ailleurs, aussi besoin d'être en root). Tu essayais donc de lancer un script en root sans être root, ça marchait pas bien du coup wink

Hors ligne

#12 Le 31/07/2013, à 15:06

friedmann

Re : Shell ne s’exécute pas avec crontab

OK j'aurais encore appris quelque chose.

Merci beaucoup.

big_smile smile

Hors ligne