Aller au contenu

Script Shell Qui Ne Se Lance Pas Au Demarrage


apages

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

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

Lien vers le commentaire
Partager sur d’autres sites

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

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

Lien vers le commentaire
Partager sur d’autres sites

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