Dans le script init de nginx dans Debian 7 (Wheezy), j'ai lu l'extrait suivant:
status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
Ce code fonctionne très bien et sudo service nginx status
sort [ ok ] nginx is running
. Pourtant, status_of_proc
n'est pas défini en bash, ni en tiret:
$ type status_of_proc
status_of_proc: not found
Bien que si j'insérais la même vérification dans le script nginx, j'obtenais le résultat suivant:
status_of_proc is a shell function
Et l'exécution de bash sur le fichier init lui-même a fourni des explications supplémentaires:
status_of_proc is a function
status_of_proc ()
{
local pidfile daemon name status OPTIND;
pidfile=;
OPTIND=1;
while getopts p: opt; do
case "$opt" in
p)
pidfile="$OPTARG"
;;
esac;
done;
shift $(($OPTIND - 1));
if [ -n "$pidfile" ]; then
pidfile="-p $pidfile";
fi;
daemon="$1";
name="$2";
status="0";
pidofproc $pidfile $daemon > /dev/null || status="$?";
if [ "$status" = 0 ]; then
log_success_msg "$name is running";
return 0;
else
if [ "$status" = 4 ]; then
log_failure_msg "could not access PID file for $name";
return $status;
else
log_failure_msg "$name is not running";
return $status;
fi;
fi
}
Pourtant, l'insertion du même appel de fonction dans un script init fait par moi-même a renvoyé que la fonction n'était pas définie. Cela n'a donc rien à voir avec les scripts d'initialisation étant spéciaux. Il n'est pas non plus déclaré précédemment dans le script init. Autour du filet, j'ai lu que cela faisait partie du LSB, mais je ne sais pas comment l'appeler. Quelqu'un peut-il m'aider à comprendre comment utiliser cette merveilleuse fonction?
la source
Réponses:
J'ai trouvé que la fonction provenait du
/lib/lsb/init-functions
script d'initialisation nginx. Donc, en ajoutant:Pour mon script init a résolu le problème.
la source