¿Qué es status_of_proc y cómo lo llamo?

10

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 statussalidas [ ok ] nginx is running. Sin embargo, status_of_procno 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?

Rovanion
fuente
¿Por qué esta pregunta se considera fuera de tema?
Piotr Jurkiewicz
@PiotrJurkiewicz -> Ya no. :)
Muhamed Huseinbašić

Respuestas:

17

Descubrí que la función se originó /lib/lsb/init-functionsen el script de inicio nginx. Entonces agregando:

. /lib/lsb/init-functions

Para mi guión de inicio resuelto el problema.

Rovanion
fuente