我试图存储我需要以非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。
答案 0 :(得分:2)
后台流程是在su
启动的子shell中创建的,因此您需要在那里捕获$!
。
su $USER -c "python2.7 $PROG $PROG_ARGS & echo \$! > $PID_FILE"