🔪

子孫末代まで殺したい

2023/01/13に公開

概要

プロセスを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

先行研究/参考文献

https://qiita.com/harukasan/items/ab2b0424656764c057bd
https://psutil.readthedocs.io/en/latest/#processes

Discussion