[解決済み】ゾンビプロセスを終了させる方法
2022-04-14 20:14:44
質問
自分のプログラムをフォアグラウンドで起動し(デーモンプログラム)、そのプログラムを
kill -9
が、ゾンビが残っていて、それを殺すことができない。
kill -9
. ゾンビプロセスを殺すには?
ゾンビが死んだプロセス(すでに殺された)である場合、どのようにそれを
ps aux
?
root@OpenWrt:~# anyprogramd &
root@OpenWrt:~# ps aux | grep anyprogram
1163 root 2552 S anyprogramd
1167 root 2552 S anyprogramd
1169 root 2552 S anyprogramd
1170 root 2552 S anyprogramd
10101 root 944 S grep anyprogram
root@OpenWrt:~# pidof anyprogramd
1170 1169 1167 1163
root@OpenWrt:~# kill -9 1170 1169 1167 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [anyprogramd]
root@OpenWrt:~# kill -9 1163
root@OpenWrt:~# ps aux |grep anyprogram
1163 root 0 Z [anyprogramd]
解決方法は?
ゾンビはすでに死んでいるので、殺すことはできません。 ゾンビを掃除するには、親に待ってもらう必要があるので、親を殺すとゾンビがいなくなるように働くはずです。 (親が死んだ後、ゾンビはpid 1に継承され、pid 1はゾンビを待ち、プロセステーブルのそのエントリをクリアします)。 もし、あなたのデーモンがゾンビになる子供を産んでいるなら、バグがあります。 あなたのデーモンは、その子供が死ぬと、それに気づき
wait
を実行し、その終了ステータスを決定します。
ゾンビの親であるすべてのプロセスにシグナルを送る方法の例です(これは非常に粗雑で、意図しないプロセスを殺してしまう可能性があることに注意してください)。 このようなハンマーのような使い方はお勧めしません)。
# Don't do this. Incredibly risky sledge hammer!
kill $(ps -A -ostat,ppid | awk '/[zZ]/ && !a[$2]++ {print $2}')
関連
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Bashで文字列変数を連結する方法
-
[解決済み] Bashで文字列が部分文字列を含むかどうかをチェックする方法
-
[解決済み] scpを使ってリモートからローカルにフォルダをコピーするにはどうしたらいいですか?
-
[解決済み] ワイルドカードマッチングに基づいて、現在のフォルダとサブフォルダ内のすべてのファイルを再帰的に検索するにはどうすればよいですか?
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
-
[解決済み] Linuxで特定のポートで動作しているプロセスを停止させる方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
deepinシステムからログアウトする方法は?deepinシステムからログアウトし、ユーザーを切り替える方法
-
Vmware 16仮想マシンを開けない場合、ファイルをローカルにコピーする方法は?
-
Linux Mintのシステムバージョン情報はどこにありますか? Linux Mint のシステム情報を見るためのヒント
-
Process.waitFor()の戻り値の意味するところ
-
[解決済み] ビーコン待ちでハングアップしたリーバー
-
[解決済み] ディレクトリInodeと通常ファイルInodeの比較
-
[解決済み] エラーです。Can't open display: (null)と表示されることがあります。
-
[解決済み] Linuxでファイルをシンボリックリンクするには?[クローズド]
-
[解決済み] Linux で grep を使ってファイル名だけを表示するにはどうしたらいいですか?
-
[解決済み] どのバージョンのPostgreSQLを使用していますか?