Я сделал на Python службу, которая может запускать и убивать сторонние процессы (с помощью
Popen
). Но есть одна маленькая проблема: при выходе из службы (
systemctl stop
или просто
kill
процесса) она уносит с собой в могилу запущенные процессы.
Парочка примеровЧто происходит в нашем царстве?
Я запускаю несколько экземпляров
server.sh
с помощью
pyservice
.
ps -aef --forest
показывает ожидаемое дерево:
python3.6 /opt/pyservice/service.py
\_ [server.sh] <defunct>
/usr/bin/java -server -jar ./Application.jar
/usr/bin/java -server -jar ./Application.jar
Если я уложу
service.py
,
Application.jar
тоже завершится.
Чего мы хотим?
Чтобы после
kill service.py
или перезапуска
pyservice
наши запущенные через него
server.sh
и его содержимое продолжили шуршать.
Что я уже пытался делать?
Разные комбинации
os.system
,
subprocess.Popen
,
nohup
,
&
и их аргументов.
Что я делаю не так?