Используйте python для перезапуска всего процесса

Моя платформа - ROS Ubuntu в Raspberry Pi 2. Я запустил скрипт оболочки, запустив узел python, чтобы перезапустить весь процесс. Однако когда я убиваю узел python, все, что запускается узлом python, также уничтожается.

Python:

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

Мои вопросы:

  1. Есть ли способ убить и перезапустить процесс в Python?
  2. Это так? Можно ли убить узел Python, но сохранить те процессы, которые были запущены этим узлом Python?
1
задан 22 July 2016 в 01:02

1 ответ

Предположим, что мы запускаем некоторый скрипт Python через python stuff.py. Мы можем легко найти, что это - PID через pgrep

$ pgrep -f stuff.py                                                                                         
7573

, И уничтожьте с pkill подобным способом.

$ pkill -f stuff.py

, Если Вы хотите уничтожить только дочерний процесс и не сам сценарий, затем мы должны узнать дочерние элементы. ps команда позволяет печатать процессы с PPID (породите PID). Таким образом, если Вы знаете родителя (Ваш сценарий Python) затем, Вы знаете детей также.

$ 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

Здесь мои выполнения сценария Python watch ls команда. Я могу уничтожить 8187, чтобы закрыть watch ls и позволить сценарию Python идти дальше к другим вещам.

0
ответ дан 22 July 2016 в 01:02

Другие вопросы по тегам:

Похожие вопросы: