私は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つです)。しかし、親を殺すことはお勧めできません。通常、ゾンビプロセスの作成は、修正または報告する必要があるプログラミングの問題を表します。