我正在RHEL上为Jetty编写一个init脚本。正在尝试使用init库(/etc/rc.d/init.d/functions
)提供的daemon
函数。
我找到了这个简洁的文档和一个在线示例(我也一直在查看系统上的其他init脚本以获取示例)。
在线查看此片段以启动守护程序
daemon --user="$DAEMON_USER" --pidfile="$PIDFILE" "$DAEMON $DAEMON_ARGS &"
RETVAL=$?
pid=`ps -A | grep $NAME | cut -d" " -f2`
pid=`echo $pid | cut -d" " -f2`
if [ -n "$pid" ]; then
echo $pid > "$PIDFILE"
fi
为什么要费力地查找$PID
并手动将其写入$PIDFILE
?我想我想知道--pidfile
选项对daemon
函数的意义是什么
要回答您猜测的问题,--pidfile
用于检查守护进程是否已经在运行。在RHEL(及其衍生物)上,daemon
函数不会写入pidfile。
在程序停留在前台的情况下,必须通过将&
附加到命令来明确地将其发送到后台,然后必须提取pid。当使用daemon
时,$!
不可用。