在unix启动脚本中检索pid

时间:2012-11-30 15:04:29

标签: unix pid

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

守护进程被设计为多次fork,因此从$返回的PID很可能!不会是你想要以后使用的pid。你可能需要这样做:

ps -eo pid,command,lstart --sort lstart | grep 'daemon_name' | tail -1