綾小路龍之介の素人思考

[Linux] defunct プロセスを kill できない場合には親プロセスも同時に kill

defunct 残りまくりでどうしようもない感じになった場合に。

例えば以下のようなプロセスツリーを考える。

$ ps --forest 5862 5882 14109 20195
  PID TTY      STAT   TIME COMMAND
14109 pts/1    Ss     0:01 /bin/bash
 5862 pts/1    Sl+    1:47  \_ emacs -nw
20195 ?        Ss     0:00      \_ gnutls-cli --x509cafile /etc/ssl/certs/ca-certificates.crt -p ****** ****************************

ここで子プロセスの応答がなくなり、kill すると、defunct プロセスが残ってしまった。

$ kill 20195
$ ps --forest 5862 5882 14109 20195
  PID TTY      STAT   TIME COMMAND
14109 pts/1    Ss+    0:01 /bin/bash
 5862 pts/1    Tl     1:59  \_ emacs -nw
20195 ?        Zs     0:00      \_ [gnutls-cli] <defunct>

そんなときは defunct プロセスとその親プロセスを kill するときれいに消える。

$ kill -9 20195 5862
$ ps --forest 5862 5882 14109 20195
  PID TTY      STAT   TIME COMMAND
14109 pts/1    Ss+    0:01 /bin/bash

リファレンス

  1. kill - What is a <defunct> process, and why doesn't it get killed? - Ask Ubuntu
  2. bash(1): GNU Bourne-Again SHell - Linux man page

ソーシャルブックマーク

  1. はてなブックマーク
  2. Google Bookmarks
  3. del.icio.us

ChangeLog

  1. Posted: 2007-11-04T17:36:35+09:00
  2. Modified: 2007-11-04T17:36:35+09:00
  3. Generated: 2019-01-02T23:09:09+09:00