status_of_procとは何ですか?どのように呼び出しますか?


10

Debian 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_proc、bashでもダッシュでも定義されていません。

$ 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 2015年

@PiotrJurkiewicz->もうありません。:)
MuhamedHuseinbašić2017

回答:


17

この関数は/lib/lsb/init-functionsnginx initスクリプトから供給されていることがわかりました。だから追加:

. /lib/lsb/init-functions

私の初期化スクリプトは問題を解決しました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.