Я создал службу Linux, используя Python.Служба может запускать / уничтожать внешние процессы, используя Popen
.Но есть небольшая проблема: после перезапуска службы запущенные процессы прекратились.
Пара примеров
pyservice.service
(Unit-file): [Service]
ExecStart=/opt/pyservice/service.py
service.py
: ...
subprocess.Popen('server.sh')
...
server.sh
: /usr/bin/java -server -jar ./Application.jar &
Что происходит?
Я запускаю несколько экземпляров 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
тоже будут убиты.
Что я ожидаю?
После service.py
kill или pyservice
рестарт server.sh
будет запущен.
Что я уже пробовал?
Различные комбинации os.system
, subprocess.Popen
, nohup
, &
иих аргументы.
Что я делаю не так?