Я сделал на 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,
& и их аргументов.
Что я делаю не так?