Ubuntu 14.04
У меня есть простое задание upstart test.conf
:
root@ubuntutest:~# cat /etc/init/test.conf
expect fork
script
/root/test.py
end script
и простой скрипт на питоне /root/test.py
:
root@ubuntutest:~# cat /root/test.py
#!/usr/bin/python
import time
print("Hello, World")
time.sleep(30)
print("Goodbye")
Я запускаю тестовое заданиеубедитесь, что upstart отслеживает правильный PID, дождитесь завершения сценария, но затем upstart не остановит отслеживание несуществующего PID.Таким образом, выскочка всегда показывает, что задание выполняется (хотя на самом деле это не так)
root@ubuntutest:~# initctl status test
test stop/waiting
root@ubuntutest:~# initctl start test
test start/running, process 1859
root@ubuntutest:~# ps aux | grep 1859
root 1859 0.2 0.7 29832 7188 ? S 14:43 0:00 /usr/bin/python /root/test.py
root 1862 0.0 0.2 11760 2156 pts/0 S+ 14:43 0:00 grep --color=auto 1859
root@ubuntutest:~# ps aux | grep 1859
root 1864 0.0 0.2 11760 2224 pts/0 S+ 14:43 0:00 grep --color=auto 1859
root@ubuntutest:~# initctl status test
test start/running, process 1859
Если я удаляю expect fork
из тестового задания, то все работает хорошо (кроме следов выскочка sh
вместо python
) - я хочу понять, что не так с моим кодом?
То же самое происходит, если я использую скрипт bash вместо python:
#!/bin/bash
sleep 30