Che cos'è status_of_proc e come posso chiamarlo?


10

Nello script init di nginx in Debian 7 (Wheezy) ho letto il seguente estratto:

status)
            status_of_proc -p /var/run/$NAME.pid "$DAEMON" nginx && exit 0 || exit $?
            ;;

Questo codice funziona bene e sudo service nginx statusgenera [ ok ] nginx is running. Tuttavia status_of_procnon è definito in bash, né in trattino:

$ type status_of_proc
status_of_proc: not found

Tuttavia, se inserissi lo stesso segno di spunta nello script nginx, avrei ottenuto il seguente risultato:

status_of_proc is a shell function

E l'esecuzione di bash sul file init stesso ha fornito ulteriori spiegazioni:

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
}

Tuttavia, inserendo la stessa chiamata di funzione in uno script di inizializzazione da me restituito, la funzione non era definita. Quindi non ha nulla a che fare con gli script di init speciali. Né è dichiarato in precedenza nello script init. Intorno alla rete ho letto che fa parte dell'LSB, ma non riesco a capire come chiamarlo. Qualcuno può aiutarmi a capire come usare questa meravigliosa funzione?


Perché questa domanda è considerata fuori tema?
Piotr Jurkiewicz,

@PiotrJurkiewicz -> Non più. :)
Muhamed Huseinbašić il

Risposte:


17

Ho scoperto che la funzione proveniva dallo /lib/lsb/init-functionsscript init nginx. Quindi aggiungendo:

. /lib/lsb/init-functions

Per il mio script init risolto il problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.