En el script de inicio de nginx en Debian 7 (Wheezy) leí el siguiente ejercicio:
status)
status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
;;
Este código se ejecuta bien y sudo service nginx status
salidas [ ok ] nginx is running
. Sin embargo, status_of_proc
no está definido en bash, ni en el guión:
$ type status_of_proc
status_of_proc: not found
Sin embargo, si inserté el mismo cheque en el script nginx, obtuve el siguiente resultado:
status_of_proc is a shell function
Y ejecutar bash en el archivo de inicio proporcionó más explicaciones:
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
}
Sin embargo, al insertar la misma llamada de función en un script de inicio hecho por mí mismo, se devolvió que la función no estaba definida. Por lo tanto, no tiene nada que ver con que los scripts de inicio sean especiales. Tampoco se declara previamente en el guión de inicio. Alrededor de la red, leí que es parte del LSB, pero no puedo entender cómo llamarlo. ¿Alguien, por favor, me ayudará a descubrir cómo usar esta maravillosa función?