获取以其他用户身份启动的后台进程的 PID
Get PID of backround process lauched as other users
我正在尝试存储我需要以非根用户身份启动的后台进程的 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 以来它几乎成功了,但它总是在我实际之前的那个进程(例如:如果我的 python PID 是 3101,则保存的 PID 将是 3100)。我怀疑这是启动 python 脚本的 shell 的 PID。
我的问题是,如何以特定用户身份启动我的 python 脚本并同时保存 PID?
我是 运行 RHLE 6.
后台进程是在su
启动的子shell中创建的,所以你需要在那里捕获$!
。
su $USER -c "python2.7 $PROG $PROG_ARGS & echo $! > $PID_FILE"
我正在尝试存储我需要以非根用户身份启动的后台进程的 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 以来它几乎成功了,但它总是在我实际之前的那个进程(例如:如果我的 python PID 是 3101,则保存的 PID 将是 3100)。我怀疑这是启动 python 脚本的 shell 的 PID。
我的问题是,如何以特定用户身份启动我的 python 脚本并同时保存 PID?
我是 运行 RHLE 6.
后台进程是在su
启动的子shell中创建的,所以你需要在那里捕获$!
。
su $USER -c "python2.7 $PROG $PROG_ARGS & echo $! > $PID_FILE"