在我写的一个简单的启动脚本中我有:
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
答案 0 :(得分:0)
尝试$$而不是$! (当前的pid而不是最后一个)
答案 1 :(得分:0)
守护进程被设计为多次fork,因此从$返回的PID很可能!不会是你想要以后使用的pid。你可能需要这样做:
ps -eo pid,command,lstart --sort lstart | grep 'daemon_name' | tail -1