status_of_proc 란 무엇이며 어떻게 호출합니까?


10

데비안 7 (Wheezy)의 nginx init 스크립트에서 다음 발췌문을 읽었습니다.

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

이 코드는 제대로 실행되고 sudo service nginx status출력 [ ok ] nginx is running됩니다. 그러나 status_of_procbash에서 대시로 정의되지 않았습니다.

$ type status_of_proc
status_of_proc: not found

nginx 스크립트에 동일한 검사를 삽입하면 다음과 같은 결과가 나타납니다.

status_of_proc is a shell function

그리고 init 파일 자체에서 bash를 실행하면 추가 설명이 제공됩니다.

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
}

그러나 같은 함수 호출을 자신이 만든 init 스크립트에 삽입하면 함수가 정의되지 않았다고 반환했습니다. 따라서 init 스크립트는 특별하지 않습니다. init 스크립트에서 이전에 선언되지 않았습니다. 그물 주위에서 나는 그것이 LSB의 일부라는 것을 읽었지만 어떻게 전화 해야하는지 알 수 없습니다. 누군가이 훌륭한 기능을 어떻게 사용하는지 알아낼 수 있습니까?


이 질문이 주제를 벗어난 것으로 간주되는 이유는 무엇입니까?
Piotr Jurkiewicz

@PiotrJurkiewicz-> 더 이상은 아닙니다. :)
Muhamed Huseinbašić

답변:


17

함수가 /lib/lsb/init-functionsnginx init 스크립트에서 제공되었다는 것을 알았습니다 . 따라서 추가 :

. /lib/lsb/init-functions

내 init 스크립트로 문제를 해결했습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.