Dans le script init de Nginx à Debian 7 (Wheezy), j'ai lu l'exercice suivant:
status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
Ce code fonctionne juste bien et Sudo service nginx status
les sorties [ ok ] nginx is running
. Encore status_of_proc
n'est pas défini dans Bash, ni à Dash:
$ type status_of_proc
status_of_proc: not found
Bien que si j'insère la même vérification dans le script Nginx, j'ai obtenu le résultat suivant:
status_of_proc is a Shell function
Et courir bash sur le fichier init lui-même fourni une explication supplémentaire:
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 de la même fonction L'appel dans un script init fait par moi-même a renvoyé que la fonction n'était pas définie. Donc, il n'a rien à voir avec les scripts init étant spéciaux. Il n'est pas non plus déclaré précédemment dans le script init. Autour du Net, j'ai lu que cela fait partie du LSB, mais je ne peux pas comprendre comment l'appelez. Est-ce que quelqu'un veut-il m'aider s'il vous plaît à comprendre comment utiliser cette merveilleuse fonction?
J'ai trouvé que la fonction provient de /lib/lsb/init-functions
Dans le script Nginx Init. Ajout de:
. /lib/lsb/init-functions
À mon script init a résolu le problème.