Debian-Wheezy

什麼是 status_of_proc,我該如何稱呼它?

  • January 4, 2015

在 Debian 7 (Wheezy) 中 nginx 的初始化腳本中,我閱讀了以下摘錄:

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-script 中插入相同的檢查,我會得到以下結果:

status_of_proc is a shell function

並且在初始化文件本身上執行 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 腳本中也沒有聲明它。在網上我讀到它是 LSB 的一部分,但我不知道如何稱呼它。有人可以幫我弄清楚如何使用這個奇妙的功能嗎?

我發現該函式來自/lib/lsb/init-functionsnginx init 腳本。所以添加:

. /lib/lsb/init-functions

我的初始化腳本解決了這個問題。

引用自:https://serverfault.com/questions/643006