web-dev-qa-db-fra.com

Qu'est-ce que Statut_of_Proc, et comment puis-je l'appeler?

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?

10
Rovanion

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.

17
Rovanion