Crontab : script qui ne se lance pas

bonjour,
je m’en remets à vous une nouvelle fois. J’ai mis en place un script afin de relever mes températures 1-wire.

voici ma ligne crontab

et son code

#!/bin/sh /usr/src/1w_to_eib.sh /usr/lib/cgi-bin/php /var/www/tgrapher/update_rrd.php exit 0

si je lance manuellement le script /usr/src/_1wToEibd.sh, pas de pb, j’ai bien mes températures qui se mettent a jour.
Par contre, ma crontab ne semble pas fonctionner :frowning:.
J’ai beau chercher, impossible de comprendre.

Merci d’avance pour votre aide.

Arnaud

Salut,

Qui lances ce script ?

Deux fois.

User ? Root ? > Serait-ce la clé …

J’ajouterais même qu’un :

pourrait aussi aider (histoire de voir si le path du shell est bien renseigné).

Et tant qu’on y est on va demander aussi un :

Un truc qui coince, dans mon royaume.

[code][18:32:59][] ~ # head /root/maj_ip_dynamique.sh
#!/bin/bash


Recuperation de l’ip

IP=/usr/bin/dig +short $dyndns | /usr/bin/tail -n 1
[18:33:37][] ~ # [/code]

Rebjr,
déjà merci pour vos réactions rapides.
je connaissais pas la commande head !

en voici le résultat :

root@knxweb:/usr/src# head /usr/src/1w_to_eib.sh #!/bin/sh _1w_ch_simon ="28.7077E1020000" _1w_Dressing ="28.E278E1020000" _1w_chaudiere1 ="28.9276BF030000" _1w_chaudiere2 ="28.DA97BF030000" _1w_ch_Parent ="28.AE79BF030000" _1w_cuisine ="28.BE78E1020000" _1w_technique ="28.DD82BF030000" _1w_ch_aurelien ="28.438FBF030000" _1w_wc ="22.502828000000"

il y aurait peut etre une erreur dans mon script que je ne vois plus :frowning:,

[code]#!/bin/sh
_1w_ch_simon =“28.7077E1020000”
_1w_Dressing =“28.E278E1020000”
_1w_chaudiere1 =“28.9276BF030000”
_1w_chaudiere2 =“28.DA97BF030000”
_1w_ch_Parent =“28.AE79BF030000”
_1w_cuisine =“28.BE78E1020000”
_1w_technique =“28.DD82BF030000”
_1w_ch_aurelien =“28.438FBF030000”
_1w_wc =“22.502828000000”
_1w_Salon =“22.0E0F28000000”
_1w_Bureau =“28.51BFBF030000”
_1w_grp_ch_simon =“4/6/52”
_1w_grp_Dressing =“4/6/50”
_1w_grp_chaudiere1 =“4/6/101”
_1w_grp_chaudiere2 =“4/6/102”
_1w_grp_ch_Parent =“4/6/59”
_1w_grp_cuisine =“4/6/51”
_1w_grp_technique =“4/6/56”
_1w_grp_ch_aurelien =“4/6/55”
_1w_grp_wc =“4/6/53”
_1w_grp_Salon =“4/6/54”
_1w_grp_Bureau ="4/6/49"
echo ‘-------------------------------------Ch Simon’
#echo “/usr/src/I_O_1wire.sh” $_1w_ch_simon $_1w_grp_ch_simon
echo exec /usr/src/I_O_1wire.sh $_1w_ch_simon $_1w_grp_ch_simon

echo ‘-------------------------------------Dressing’
#echo /usr/src/I_O_1wire.sh $_1w_Dressing $_1w_grp_Dressing
echo exec /usr/src/I_O_1wire.sh $_1w_Dressing $_1w_grp_Dressing

echo ‘-------------------------------------Chaudiere1’
#echo /usr/src/I_O_1wire.sh $_1w_chaudiere1 $_1w_grp_chaudiere1
echo exec /usr/src/I_O_1wire.sh $_1w_chaudiere1 $_1w_grp_chaudiere1

echo ‘-------------------------------------Chaudiere2’
#echo /usr/src/I_O_1wire.sh $_1w_chaudiere2 $_1w_grp_chaudiere2
echo exec /usr/src/I_O_1wire.sh $_1w_chaudiere2 $_1w_grp_chaudiere2

echo ‘-------------------------------------Ch Parent’
#echo /usr/src/I_O_1wire.sh $_1w_ch_Parent $_1w_grp_ch_Parent
echo exec /usr/src/I_O_1wire.sh $_1w_ch_Parent $_1w_grp_ch_Parent

echo ‘-------------------------------------Cuisine’
#echo /usr/src/I_O_1wire.sh $_1w_cuisine $_1w_grp_cuisine
echo exec /usr/src/I_O_1wire.sh $_1w_cuisine $_1w_grp_cuisine

echo ‘-------------------------------------Technique’
#echo /usr/src/I_O_1wire.sh $_1w_technique $_1w_grp_technique
echo exec /usr/src/I_O_1wire.sh $_1w_technique $_1w_grp_technique

echo ‘-------------------------------------Ch Aurelien’
#echo /usr/src/I_O_1wire.sh $_1w_ch_aurelien $_1w_grp_ch_aurelien
echo exec /usr/src/I_O_1wire.sh $_1w_ch_aurelien $_1w_grp_ch_aurelien

echo ‘-------------------------------------WC’
#echo /usr/src/I_O_1wire.sh $_1w_wc $_1w_grp_wc
echo exec /usr/src/I_O_1wire.sh $_1w_wc $_1w_grp_wc

echo ‘-------------------------------------Salon’
#echo /usr/src/I_O_1wire.sh $_1w_Salon $_1w_grp_Salon
echo exec /usr/src/I_O_1wire.sh $_1w_Salon $_1w_grp_Salon

echo ‘-------------------------------------Bureau’
#echo /usr/src/I_O_1wire.sh $_1w_Bureau $_1w_grp_Bureau
echo exec /usr/src/I_O_1wire.sh $_1w_Bureau $_1w_grp_Bureau
exit 0
[/code]

les critiques sont bien venues, car j 'imagine que mon code est pourri… j’aurai preféré un include et un truc du style do while… mais ca sera pour plus tard…

quant a qui ? je le joue manuellement en root, et selon moi, la crontab est lancée par le root user ?

Merci encore pour votre aide.
Arnaud

[quote=“BelZéButh”]… Un truc qui coince, dans mon royaume. …
Code:
[18:32:59][] ~ # head /root/maj_ip_dynamique.sh
#!/bin/bash
#[/quote]
Je vois pas ce qui coince, je voulais savoir si le sheban était bien renseigné, avec le path complet quoi…

EDIT: tu devais sans doute être en train de rédiger ton post quand j’avais demandé:
Et tant qu’on y est on va demander aussi un :

EDIT 2:
Zut! j’avais pas bien regardé:
[strike]*/1 * * * * sh /usr/src/_1wToEibd.sh[/strike]
à remplacer par :

Le path en question (qui manquait) manquait dans l’appel de la commande,
je le cherchais dans le script (et il y est bien.)

D’ailleurs, si ton script est exécutable, pourquoi ne fais-tu pas directement:

# ls -l /usr/src/1w_to_eib.sh -rwxr-xr-x 1 root root 2766 Aug 31 18:38 /usr/src/1w_to_eib.sh

Pour le reste, je comprends pas… dsl.

Dans ton premier post, tu donne:

or, “sh” est indiqué sans son path.
comme la commande “sh” n’est pas dans le dossier d’où “cron” lance l’exécution, il ne pourra trouver la commande “sh”.
Si tu avais donné:

ça aurait pu fonctionner car il aurait pu exécuter “/bin/sh” étant donné que son path (son chemin dans le système de fichiers) était spécifié.

Mais comme tu as rendu ton script exécutable (sûrement avec la commande “chmod”):
Et que le sheban “#!/bin/sh” est indiqué dans la première ligne du script,
tu peux donc demander à cron d’exécuter ce script sans spécifier le “/bin/sh” qui précède le nom du script.
donc:

Bien sûr, là aussi, le path est bien spécifié, et en voulant exécuter les commandes qui sont dans ce script,
il va commencer par lire le shebang et se dire: tiens! ben voilà un script dont je vais lancer les commandes avec “/bin/sh”.
Si tu avais mis un shebang “#!/bin/bash” cron se serait dit: tiens! ben voilà un script dont je vais lancer les commandes avec “/bin/bash”.

=====================
Je me rends compte que je me suis trompé de fichier quand je t’ai demandé le head et le tail.
Excuse moi, je voulais dire:

head /usr/src/_1wToEibd.sh ls -l /usr/src/_1wToEibd.sh

Merci pour tout ce détail MicP !

# ls -l /usr/src/_1wToEibd.sh -rwxr-xr-x 1 root root 93 Aug 24 10:45 /usr/src/_1wToEibd.sh root@knxweb:/usr/src# head /usr/src/_1wToEibd.sh #!/bin/sh /usr/src/1w_to_eib.sh /usr/lib/cgi-bin/php /var/www/tgrapher/update_rrd.php exit 0

j’ai donc enlevé le sh

[code]# crontab -l

Lancer la commande crontab crontab.txt

#/2 * * * * /usr/src/1w_to_eib.sh >> /tmp/trace1w.txt
#
/3 * * * * /usr/lib/cgi-bin/php /var/www/tgrapher/update_rrd.php
*/1 * * * * /usr/src/_1wToEibd.sh[/code]

j’avais même pas fait gaffe.
Tu es sur que tu as réussit à faire fonctionner ce script manuellement ?

Dans ma besace. :023

man head a écrit:
… Afficher les 10 premières lignes de chaque FICHIER sur la sortie standard. …[/quote]

Jusqu’à cette heure, moi non plus, j’ai dû l’oublier, en route … Merci, pour ce rappel, de vaccin. :006

* edit *

  • vaccin[strike]ation[/strike]
  • ,

[quote=“MicP”]j’avais même pas fait gaffe.
Tu es sur que tu as réussit à faire fonctionner ce script manuellement ?[/quote]

Certains. Je m’explique. Ce script va récupérer les températures de mes différents capteurs 1-wire sur le bus. j’utilise en parallèle rdtool pour mes graphiques. si je le lance en manuel, je vois bien mes courbes qui évoluent. Sinon, calme plat .

vraiment, je suis désemparé !

Arnaud

Salut,

Je réitère.

[quote=“acognard”]# ls -l /usr/src/1w_to_eib.sh
-rwxr-xr-x 1 root root 2766 Aug 31 18:38 /usr/src/1w_to_eib.sh[/quote]

Comment se fassent et se fessent …


  • Au fait : “PATH” en est-il informé en lieu et place.

Lol a eu un problème similaire y’a pas longtemps, c’était un problème de PATH

probleme-de-lancement-d-un-script-avec-cron-t44558.html

à voir…

Hello,
effectivement, rien a voir avec le cron, j’ai finalement trouvé un path sur un sous script qui n’était pas renseigné.

j’ai trouvé en activement le mail avec envoi sur ererur du log complet !!!

résolu, merci a vous.
en vous souhaiant une bonne fin de we !
Arnaud