Upstart мониторинг проблем в ubuntu и создание pid

Я искал, как создать файл pid для мониторинга процессов выскочки в ubuntu. Я просмотрел принятый ответ в Ubuntu, upstart и создал pid для мониторинг и получил следующий код:

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) — это просто оболочка типа:

    /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 содержит pid родителя фактического процесса. Не ребенок тот, который является фактическим процессом.

  3. Респаун не работает. Я убиваю дочерний процесс с помощью kill pid (что также убивает родителя, но не наоборот).


person Karan    schedule 18.04.2013    source источник