Lokomass Posté(e) le 30 novembre 2013 Partager Posté(e) le 30 novembre 2013 Bonjour à tous, J'ai un souci qui relève de l'incompréhension totale. J'ai une tâche qui fonctionne parfaitement à tous les coups manuellement mais qui ne fonctionne que de temps en temps via crontab... Je suis desespéré... La ligne en question : # Script 4 45 23 * * 5 root /usr/syno/scripts/boot.sh Ce script démarre mon PC : Et dedans nous avons : #!/opt/bin/bash ############################################################ # Démarrage du PC # ############################################################ #Déclaration des variables VAR="/usr/syno/variables/variables.sh" if [ -e "$VAR" ] then . "$VAR" else echo "Le fichier "$VAR" n'existe pas." exit fi #Programme principal if [ "$NAS" != "$NOM3" ] then wakelan "$PC1" else wakelan "$PC2" fi Pour moi le souci ne peut pas venir du script en lui même mais du crontab forcément... Voilà la date que me renvoi le NAS (qui n'est pas à jour au passage même si j'ai une ligne crontab pour mettre à jour la date mais je ne suis pas sur qu'il y ait un rapport) NAS> date Sat Nov 30 09:47:11 CET 2013 Donc je suis un peu perdu, samedi dernier pas de souci, ça a démarré et la non, ce matin je teste depuis un autre ordi 5 fois de suite, le PC démarre sans aucun souci à chaque fois, Que se passe t-il svp ?? Merci 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 30 novembre 2013 Partager Posté(e) le 30 novembre 2013 (modifié) A ta place, avant d'accuser le cron, je commencerait par rediriger la sortie du script dans un fichier log histoire de pouvoir analyser les eventuelles erreurs, En début de script, Un truc dans le genre: exec >>/tmp/boot_cron.log 2>&1 echo "=======" date # histoire de savoir l'heure de démarrage echo "=======" set -x # pour activer la trace des commandes Le contenu du fichier log pourra te mettre sur la piste. Autre chose, je constate tu ne positionnes pas le "PATH" dans ton script (et c'est une très mauvaise idée en général). Suivant comment à été lancé le démon "cron" (soit au boot ou relancé manuellement) il sera exécuté dans le 1er cas dans l'environnement par défaut dont le PATH se limite à "/bin:/usr/bin". C'est cet environnement dont va hériter ton script et Il aura du mal a trouver la commande "wakelan" dans ce cas Modifié le 30 novembre 2013 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Fravadona Posté(e) le 30 novembre 2013 Partager Posté(e) le 30 novembre 2013 Je suis d'accord avec CoolRaoul, c'est juste un probleme d'environnement. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 30 novembre 2013 Auteur Partager Posté(e) le 30 novembre 2013 J'ai oublié de préciser que le fichier parsé au début contient le path au début : NAS> cat /usr/syno/variables/variables.sh #!/opt/bin/bash ############################################################ # Path # ############################################################ export PATH="/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/usr/syno/scripts" .... Je pense vraiment que c'est le crontab puisque la semaine dernière ça a parfaitement fonctionné... 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 1 décembre 2013 Partager Posté(e) le 1 décembre 2013 (modifié) J'ai oublié de préciser que le fichier parsé au début contient le path au début : NAS> cat /usr/syno/variables/variables.sh #!/opt/bin/bash ############################################################ # Path # ############################################################ export PATH="/opt/bin:/opt/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/syno/sbin:/usr/syno/bin:/usr/local/sbin:/usr/local/bin:/usr/syno/scripts" .... Je pense vraiment que c'est le crontab puisque la semaine dernière ça a parfaitement fonctionné... Alors commencer par mettre le logging en place comme j'ai indiqué déjà pour y voir plus clair. NB: mettre des fichiers perso dans la hiérarchie "/usr/syno" est casse-gueule car ils seront irrémédiablement supprimés lors de toute mise à jour DSM (mais à priori pas dans le cas de simple correctifs). Il est bien plus approprié de choisir l'arborescence "/usr/local" qui est toujours préservée (c'est documenté). Modifié le 1 décembre 2013 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 1 décembre 2013 Auteur Partager Posté(e) le 1 décembre 2013 Est ce que le souci ne viendrai pas du fait que le path soit dans un autre script ? Faudrait pas mettre export devant ? Je vais essayer de Logguer alors, mais bon ce souci est très étrange 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 1 décembre 2013 Partager Posté(e) le 1 décembre 2013 Est ce que le souci ne viendrai pas du fait que le path soit dans un autre script ? Faudrait pas mettre export devant ? Non: à partir du moment ou l'autre script est inviqué par la commande ".", il s'exécute dans le contexte de l’appelant. (c'est grosso modo équivalent à une commande "include" présente dans d'autres langages) Je vais essayer de Logguer alors, mais bon ce souci est très étrange J'ai bon espoir que le contenu du fichier log nous donnera l'explication. Tiens nous au courant du résultat 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 1 décembre 2013 Auteur Partager Posté(e) le 1 décembre 2013 Par contre il faut que je redirige la sortie du crontab ou du script boot.sh ? 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 1 décembre 2013 Partager Posté(e) le 1 décembre 2013 Par contre il faut que je redirige la sortie du crontab ou du script boot.sh ? Faire exactement ce que j'ai décrit dans mon post un peu plus haut: mettre les lignes que j'ai données "en début de script" (dans boot.sh en l'occurence, juste au dessus de la ligne "#Déclaration des variables" par exemple ) 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CMDC Posté(e) le 1 décembre 2013 Partager Posté(e) le 1 décembre 2013 (modifié) "C'est curieux chez les marins ce besoin de faire des phrases…" ... "Mais il connaît pas Raoul, ce mec ! il va avoir un réveil pénible. J'ai voulu être diplomate à cause de vous tous, éviter que le sang coule. Mais maintenant c'est fini, je vais le travailler en férocité, le faire marcher à coup de lattes ! À ma pogne, je veux le voir ! Et je vous promets qu'il demandera pardon, et au garde-à-vous ! Et ça c'est de moi : "Moi ce que j'aime chez CoolRaoul, c'est sa patience et sa pédagogie .... même quand on était jeunes à la fac il l'était déjà " Modifié le 1 décembre 2013 par CMDC 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Lokomass Posté(e) le 2 décembre 2013 Auteur Partager Posté(e) le 2 décembre 2013 Apres modif comme tu m'as dit, j'ai lancé le script via crontab toutes les 5 minutes et aucune erreur dans les logs, sur 10 cycles... ####################### # 02/12/2013 15:10:01 # ####################### ++ export VOL=/volume1 ++ VOL=/volume1 .... ++ export LESEXT + '[' NAS '!=' NAS-Maison ']' + wakelan F4:... Donc le PC démarre bien à chaque fois, toutes les 5 minutes donc. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 2 décembre 2013 Partager Posté(e) le 2 décembre 2013 Ne reste donc plus qu'a remettre la planification telle qu'elle était initialement et attendre que ça replante. Car il serait étonnant qu'avoir ajouté le logging au script ait miraculeusement réparé le problème. 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Rejoindre la conversation
Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.