継続的なゾンビプロセスは何かが間違っているという兆候ですか?

継続的なゾンビプロセスは何かが間違っているという兆候ですか?

(オペレーティングシステム:Debianバリアント)

ゾンビ状態のプロセスです。PPidプロセスに属しますgvim。内容/proc/[pid]/wchando_exit/commは以下のようにsh/cmdlineです。/status

これがバグでしょうかgvim? Wikipediaのエントリからゾンビプロセスプログラムは自発的に呼び出しを拒否する可能性があると読んでいましたwaitが、これは gvimかなりの時間アイドル状態のセッションに関するものです。プロセスを終了しましたが、gvimゾンビはまだ周りに隠れています。これはオペレーティングシステムのバグを表しますか?

再びウィキペディアで:

ゾンビプロセスは通常、親プログラムが実行されなくなった場合のオペレーティングシステムのバグを表します。

init放棄されたプロセスはどのくらいの頻度で収集されますか?gvim死んでから少なくとも60分が経ちましたが、まだ残っています。

一方、そうかもしれないshし、そうでないかもしれませんかgvim

これ/status 文書SigQステータスは0です。

$ less /proc/30339/status
Name     : sh
State    : Z (zombie)
Tgid     : 30339
Pid      : 30339
PPid     : 29673
TracerPid:     0
Uid      :  1000    1000    1000    1000
Gid      :  1000    1000    1000    1000
FDSize   :     0
Groups   :     4 7 20 24 27 29 30 46 107 124 127 1000 
Threads  :     1
SigQ     : 0/30658
SigPnd   : 0000000000000000
ShdPnd   : 0000000000000000
SigBlk   : 0000000000000000
SigIgn   : 0000000000003001
SigCgt   : 0000000000010002
CapInh   : 0000000000000000
CapPrm   : 0000000000000000
CapEff   : 0000000000000000
CapBnd   : ffffffffffffffff
Cpus_allowed     :   3
Cpus_allowed_list:   0-1
Mems_allowed     :   1
Mems_allowed_list:   0
voluntary_ctxt_switches   :   2
nonvoluntary_ctxt_switches:   3

私の美しい睡眠を台無しにしたわけではありませんが、ただ気になって…

ベストアンサー1

ゾンビを見ることは、ゾンビを生成したプロセスのバグを示すことがよくあります。プロセスはゾンビを収集するwaitか(呼び出しを介して)明示的に無視する必要がありますSIGCLD(またはSA_NOCLDWAITフラグを設定する必要があります)。

しかし、これは小さな間違いです。ゾンビプロセスは、プロセステーブル内のリソース量がわずかである1つのアイテムのみを消費します。問題は、プロセスが数千のゾンビを残している場合にのみ深刻になります。

ゾンビの親プロセスを終了していません。そうでなければ、ゾンビは消えます。プロセス29673(ゾンビプロセスの親プロセス)はまだ生きていて実行中です(ただしwait実行されていません)。これはGvimではなくそのサブプロセスの1つであるか、Gvimウィンドウを閉じましたが、プログラムはまだ実行中です。ps l 29673このプロセスが何であるかを確認するには、実行してください。

おすすめ記事