0

在我写的一个简单的启动脚本中,我有:

PID=`su user_name -c "daemon_name > /dev/null 2>&1 & echo \$!"`  
echo $PID  

该脚本以root. 而且回声并没有真正回声任何东西:)

如果我在 shell 中输入完全相同的命令,它可以工作:

# su user_name -c "daemon_name > /dev/null 2>&1 & echo \$!"  
11831  
#  

有任何想法吗?谢谢。

编辑:在我尝试以另一个用户身份运行应用程序之前,它工作正常。
我以前使用过这段代码:

PID=`daemon_name > /dev/null 2>&1 & echo $!`  
echo $PID  

它工作得很好root

4

2 回答 2

0

尝试 $$ 而不是 $!(当前 pid 而不是最后一个)

于 2012-11-30T15:25:14.147 回答
0

守护进程被设计为多次分叉,因此 PID 很可能从 $! 不会是您以后要使用的 pid。您可能必须执行以下操作:

ps -eo pid,command,lstart --sort lstart | grep 'daemon_name' | tail -1
于 2012-11-30T15:47:46.873 回答