🔪
子孫末代まで殺したい
概要
プロセスをkillする際、その子プロセスや更にその子プロセスなど、子孫にあたるプロセス全て一括でkillする方法について。Pythonのpsutilを使う。
結構怖いプログラムなので使用時はrm -r
などのコマンドと同様に慎重に確認してください。
方法
import psutil
def kill_recursively(pid):
for p in psutil.Process(pid).children(recursive=True):
p.kill()
psutil.Process(pid).kill()
上記の関数に祖先のプロセスIDを渡すと、子孫末代まで殺してくれる。
もうちょっとだけ詳しく
-
psutil.Process.children(recursive=True)
で子孫のプロセスIDを列挙 - それらを順にkill
- 最後に祖先をkill
先行研究/参考文献
Discussion