什么是status_of_proc,我怎么称呼它?


10

在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脚本中,则会得到以下结果:

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脚本中均未声明。在网上,我读到它是LSB的一部分,但我不知道如何称呼它。有人可以帮我弄清楚如何使用此功能吗?


为什么这个问题被认为是题外话?
Piotr Jurkiewicz 2015年

Answers:


17

我发现该函数来自/lib/lsb/init-functionsnginx init脚本。因此添加:

. /lib/lsb/init-functions

我的初始化脚本解决了这个问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.