Use python para reiniciar todo o processo

1

Minha plataforma é ROS Ubuntu em Raspberry Pi 2. Eu iniciei um script de shell executando o nó python para reiniciar todo o processo. No entanto, quando eu mato o nó python, tudo iniciado pelo nó python também é morto.

Python:

 from subprocess import call
 call(['bash', 'run.sh'])

Minhas perguntas:

  1. Existe alguma maneira de matar e reiniciar o processo em python?
  2. É possível matar o nó python, mas manter vivo os processos que foram iniciados por esse nó python?
por SamTew 19.07.2016 / 16:08

1 resposta

2

Suponha que executemos algum tipo de script python por meio de python stuff.py . Podemos facilmente encontrar o seu PID via pgrep

$ pgrep -f stuff.py                                                                                         
7573

E mate com pkill de maneira semelhante.

$ pkill -f stuff.py

Se você quer matar apenas o processo filho, e não o script em si, então precisamos descobrir as crianças. O comando ps permite processos de impressão com PPID (pai PID). Então, se você conhece o pai (seu script python), então você conhece os filhos também.

$ ps -e -o args,pid,ppid  | grep $(pgrep -f run_bash.py ) | grep -v grep                                       
python run_bash.py           8186  4021
watch ls                     8187  8186

Aqui meu script python executa o comando watch ls . Eu posso matar 8187 para fechar watch ls e deixar o script python passar para as outras coisas.

    
por Sergiy Kolodyazhnyy 19.07.2016 / 16:40