2015-11-24 56 views
0

我試圖存儲我需要作爲非root用戶啓動的後臺進程的PID。獲取其他用戶啓動的後臺進程的PID

當我執行下面的腳本時,PID文件被創建但保持空白。

USER=myuser 
PROG=/path/to/service 
PROG_ARGS="" 
PIDFILE=/var/run/$NAME.pid 

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

我試着放置&su命令外,像這樣su $USER -c "python ..." &,它幾乎工作,因爲我得到一個PID,但它總是我的實際過程(如前一個:如果我的蟒蛇PID爲3101 ,保存的PID將是3100)。我懷疑這是啓動python腳本的shell的PID。

我的問題是,我如何啓動我的python腳本作爲特定用戶並同時保存PID?

我跑RHLE 6.

回答

2

su啓動子shell創建的後臺進程,所以你需要捕捉$!那裏。

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

只需提供寫入'PID_FILE'的權限,它就起作用了,謝謝。 'chmod o + rw/var/run' –