得到其他用户的背景过程PID

时间:2015-11-24 17:58:36

标签: linux bash service pid

我试图存储我需要以非root用户身份启动的后台进程的PID。

当我执行下面的脚本时,会创建PID文件但保持为空。

t1

我已经尝试将USER=myuser PROG=/path/to/service PROG_ARGS="" PIDFILE=/var/run/$NAME.pid su $USER -c "python2.7 $PROG $PROG_ARGS &" echo $! > $PIDFILE 置于&命令之外,就像su一样,它几乎起作用,因为我得到一个PID,但它始终是在我的实际过程之前(例如:如果我的python PID是3101,则保存的PID将是3100)。我怀疑这是启动python脚本的shell的PID。

我的问题是,如何以特定用户身份启动我的python脚本并同时保存PID?

我正在运行RHLE 6。

1 个答案:

答案 0 :(得分:2)

后台流程是在su启动的子shell中创建的,因此您需要在那里捕获$!

su $USER -c "python2.7 $PROG $PROG_ARGS & echo \$! > $PID_FILE"