Aller au contenu

Crontab Fonctionne Partiellement


Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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é par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

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é...

Lien vers le commentaire
Partager sur d’autres sites

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é par CoolRaoul
Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 )

Lien vers le commentaire
Partager sur d’autres sites

"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é par CMDC
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer.