Моя платформа - ROS Ubuntu в Raspberry Pi 2. Я запустил скрипт оболочки, запустив узел python, чтобы перезапустить весь процесс. Однако когда я убиваю узел python, все, что запускается узлом python, также уничтожается.
Python:
from subprocess import call
call(['bash', 'run.sh'])
Мои вопросы:
Предположим, что мы запускаем некоторый скрипт 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 идти дальше к другим вещам.