ゾンビプロセスを殺す別の方法

ゾンビプロセスを殺す別の方法

私はCentOS 6.8(Final)でいくつかのゾンビプロセスを見つけて終了しようとしましたが、まだ存在します。

[root@host user]# ps -ef | grep git
tomcat     746     1  0 Jul18 ?        00:00:00 git clone https://github.com/angular/bower-angular.git -b v1.3.20 --progress . --depth 1
tomcat     747   746  0 Jul18 ?        00:00:00 [git-remote-http] <defunct>
root     20776 20669  0 09:03 pts/3    00:00:00 grep git
tomcat   29970     1  0 Jul18 ?        00:00:00 git clone https://github.com/components/jqueryui.git -b 1.12.0 --progress . --depth 1
tomcat   29971 29970  0 Jul18 ?        00:00:00 [git-remote-http] <defunct>

[root@host user]# kill 746 747 29970 29971

[root@host user]# ps -ef | grep git
tomcat     746     1  0 Jul18 ?        00:00:00 git clone https://github.com/angular/bower-angular.git -b v1.3.20 --progress . --depth 1
tomcat     747   746  0 Jul18 ?        00:00:00 [git-remote-http] <defunct>
root     21525 20669  0 09:26 pts/3    00:00:00 grep git
tomcat   29970     1  0 Jul18 ?        00:00:00 git clone https://github.com/components/jqueryui.git -b 1.12.0 --progress . --depth 1
tomcat   29971 29970  0 Jul18 ?        00:00:00 [git-remote-http] <defunct>

ご覧のとおり、2ヶ月間運営されていますが、無害であれば私も削除します。ゾンビを殺すための他の方法はありませんか?

ベストアンサー1

ゾンビ(プロセス)は殺すことはできません。ゾンビはすでに死んだからです。ただ親プロセスが実行され、終了ステータスwait(2)が収集されるのを待ちます。プロセステーブルエントリを除いて、システム内のどのリソースも占有しません。

SIGCHLD子の 1 つが終了したことを通知するために親に送信できます (つまり、子の終了状態を収集するように要求します)。この信号は無視できます(デフォルト)。

kill -CHLD <PPID>

<PPID>親の実際のPIDに置き換えます。)

initあるいは、(PID 1)がゾンビプロセスを継承して正しくインポートするように親プロセスを終了することもできます(init孤立プロセスを継承してwait(2)定期的に実行することが主なタスクの1つです)。しかし、親を殺すことはお勧めできません。通常、ゾンビプロセスの作成は、修正または報告する必要があるプログラミングの問題を表します。

おすすめ記事