在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年
@PiotrJurkiewicz->不再。:)
—
穆罕默德·侯赛因巴希奇(MuhamedHuseinbašić)