0

我有一个服务脚本,我很可能使用一些非常规方法来实现我想要的,但仍然应该可以工作,但不是。

在以下命令中,我将启动一个进程,将该进程的 PID 保存到 var $PID,然后将变量写入 PID 文件。出于某种原因,尽管当我将 PID 保存到 时$PID,写入 var 的 PID 是父脚本的 PID,而不是最后一个运行的命令。

如何在不做一些奇怪的ps -ef | grep事情的情况下获得守护程序命令的 PID?

daemon --user $RHUSER "php -f $proc $ipaddr $port" >/dev/null 2>&1 &
PID=$!
[[ `ps h -p $PID` ]] && (success; echo $PID > /var/run/${proc%.*}.pid) || failure
echo
4

1 回答 1

0

您可以将 pid 保存到一个文件中,-F然后从那里读取它:

daemon --user "$RHUSER" -F /tmp/pid.daemon "php -f $proc $ipaddr $port" >/dev/null 2>&1  ## Remove `&`
PID=$(</tmp/pid.daemon)

我们在命令末尾删除&以确保daemon在读取 PID 文件之前写入其子进程的进程 ID。

您也可以--name与 结合使用-P。请参阅手册

于 2013-09-18T13:19:00.750 回答