apages Posté(e) le 5 mai 2013 Partager Posté(e) le 5 mai 2013 Bonjour, Je souhaite lancer au demarrage un script php. Pour cela j'ai fait un script shell qui execute le script php. Mon script est le suivant : #!/bin/sh PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin DAEMON=/usr/bin/php NAME=php DESC="Server php" PIDFILE=/opt/var/run/$NAME.pid RUNNING=0 PID="" # Defaults SERVERPATH="/volume1/web/back/server.php" CONTROLPORT="2000" CheckPID () { RUNNING=0 # check for podfile if [ -f $PIDFILE ]; then PID=`cat $PIDFILE` if [ "x$PID" != "x" ] && kill -0 $PID 2>/dev/null ; then RUNNING=1 else RUNNING=0 fi else RUNNING=0 fi } start () { CheckPID if [ $RUNNING -eq 1 ]; then echo "php daemon already running. php start aborted" exit 0 fi if [ -f $DAEMON ]; then ser2net /usr/bin/php /volume1/web/back/server.php >> /opt/var/log/php.log & sleep 2 pidof php >> /opt/var/run/php.pid echo "php is started" fi } stop () { CheckPID if [ $RUNNING -eq 1 ]; then kill $PID echo "php is stopped" rm -f ${PIDFILE} fi ] case "$1" in 'start') start ;; 'stop') stop ;; 'restart') stop start ;; *) echo "Usage: $0 { start | stop | restart }" exit 1 ;; esac exit 0 Le probleme est que ce script n'est pas executé au démarrage. Je l'ai enregistré sous le nom : S999php.sh. j'ai copié ce scipt dans /usr/syno/etc/rc.d/ et /opt/etc/init.d et j'ai meme lancé la commande "/opt/etc/init.d/S999php.sh start" dans etc/rc.local mais rien y fait. pouvez-vous m'aider a trouver mon erreur. Cordialement Pour info j'ai fait un chmod 755 sur le script 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 5 mai 2013 Partager Posté(e) le 5 mai 2013 (modifié) Le probleme est que ce script n'est pas executé au démarrage. Je l'ai enregistré sous le nom : S999php.sh. j'ai copié ce scipt dans /usr/syno/etc/rc.d/ et /opt/etc/init.d et j'ai meme lancé la commande "/opt/etc/init.d/S999php.sh start" dans etc/rc.local Pour info j'ai fait un chmod 755 sur le script Pour les scripts perso, choisir plutôt le répertoire "/usr/local/etc/rc.d" (à créer si il l'existe pas) Commencer par mettre le script dans ce dossier, et inutile de le dupliquer ailleurs. Eviter les références à "/opt" (optware) au startup, car le démarrage d'optware n'est pas forcément déjà effectué au moment de l'exécution du script. ton script lance une commande "ser2net", cette commande n'existe pas par défaut dans DSM Enfin, pour avoir une trace de ce qui se passe, ajoute un fichier log en ajoutant la ligne suivante en début de script: [ -t 2 ] || exec > /tmp/S999php.log 2>&1 Modifié le 5 mai 2013 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
apages Posté(e) le 5 mai 2013 Auteur Partager Posté(e) le 5 mai 2013 je vais tester tout ca j'ai installé ser2net, donc aucun soucis de ce coté d'ailleur quand je lance S999php quand le syno a démarré, cela fonctionne, donc a priori pas de probleme de script. Soit un probleme de droit, soit le script n'est pas executé Cordialement 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 5 mai 2013 Partager Posté(e) le 5 mai 2013 (modifié) j'ai installé ser2net, donc aucun soucis de ce cotéInstallé oui mais ou? Pour que le script exécute cet outil il est necessaire que la commande "ser2net" soit dans l'un des repertoires du PATH. d'ailleur quand je lance S999php quand le syno a démarré, cela fonctionne, donc a priori pas de probleme de script. Le contexte d'exécution lors du démarrage n'est pas le même qu'en mode nominal. Il est possible que certains pres requis ne soit pas encore actif au moment ou ton script est exécuté En plus la séquence de démarrage DSM est assez complexe, mal documentée et certaines parties d'exécutent en parallèle, ce qui peut poser des problèmes Plus particulièrement, si tu a besoin de composant d'optware, il est tres possible, que le montage de /opt ne soit pas encore opérationnel au moment ou ton script s'exécute. (et dans ce cas, contrairement à ce que j'ai dit, si optware est un pre requis, il sera mieux de mettre alors ton script dans "/opt/etc/init.d" Modifié le 5 mai 2013 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
apages Posté(e) le 5 mai 2013 Auteur Partager Posté(e) le 5 mai 2013 Effectivement ser2net est dans opt mais j'ai l'impression que le probleme vient pas de ser2net car quand le syno a demarré est que je fait un ps -C ser2net j'ai un processus peu etre que le probleme vient du fait que /volume1/ n'est pas disponible au moment du demarrage je vais tenter de mettre mon server.php ailleurs pour tester 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
CoolRaoul Posté(e) le 5 mai 2013 Partager Posté(e) le 5 mai 2013 (modifié) peu etre que le probleme vient du fait que /volume1/ n'est pas disponible au moment du demarrage je vais tenter de mettre mon server.php ailleurs pour tester Suffit d'activer le log de la façon que j'ai indiqué Tu peux ajouter "set -x" aussi en début de script pour plus de verbosité) Tu y verra tout de suite plus clair au lieu de travailler en aveugle comme jusqu'ici Modifié le 5 mai 2013 par CoolRaoul 0 Citer Lien vers le commentaire Partager sur d’autres sites More sharing options...
apages Posté(e) le 5 mai 2013 Auteur Partager Posté(e) le 5 mai 2013 Bon bin finalement apres avoir déplacer le script dans /usr/local/etc/rc.d le script se lance merci beaucoup pour ton aide 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.