使用python重启所有进程

使用python重启所有进程

我的平台是 Raspberry Pi 2 中的 ROS Ubuntu。我通过运行 python 节点启动了一个 shell 脚本来重新启动所有进程。但是,当我终止 python 节点时,python 节点启动的所有内容也会被终止。

Python:

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

我的问题:

  1. 有没有什么办法可以终止并重新启动 python 中的进程?
  2. 是否有可能终止 python 节点但保持由该 python 节点启动的进程处于活动状态?

答案1

假设我们通过 运行某种 Python 脚本python stuff.py。我们可以通过以下方式轻松找到它的 PIDpgrep

$ 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命令。我可以 kill 8187 来关闭watch ls,然后让 python 脚本继续执行其他操作。

相关内容