Upstart监控ubuntu中的问题并创建一个pid

时间:2013-04-18 10:00:29

标签: ubuntu pid upstart

我一直在寻找如何创建一个pid文件来监控ubuntu中的upstart进程。我查看了Ubuntu, upstart, and creating a pid for monitoring中接受的答案,最后得到了以下代码:

env PROGRAM_NAME=myscript
env BASE_PATH=/bar/

respawn limit 5 30

script
${BASE_PATH}/bin/python ${BASE_PATH}/scripts/${PROGRAM_NAME}.py -e ${BASE_PATH}/foo.ini
end script

post-start script
echo PID=`status myscript | egrep -oi '([0-9]+)$' | head -n1` 
echo $PID > /var/run/${PROGRAM_NAME}.pid
end script

post-stop script
rm -f /var/run/${PROGRAM_NAME}.pid
end script

我遇到了3个问题:

  1. 此代码以某种方式创建了两个进程。父进程(通过ps -ef | grep python检查)只是一个shell,如:

    /bin/sh -e -c ${BASE_PATH}/bin/python ${BASE_PATH}/scripts/${PROGRAM_NAME}.py -e ${BASE_PATH}/foo.ini /bin/sh
    

    虽然子进程有正确的替代品:

    /bar/bin/python /bar/scripts/myscript.py -e /bar/foo.ini        
    
  2. pid文件包含实际进程的 parent 的pid。不是孩子的实际过程。

  3. 重生不起作用。我用kill pid杀死子进程(也杀死了父进程,但反之亦然)。

0 个答案:

没有答案