ターミナルで遊んでいて、zsh
次のように入力しました。
$ `
bquote> yes
bquote> `
それからyes
バックグラウンドで走り始めたと思いました。Ctrl+CまたはCtrl+も\プロセスを終了できません。端末を閉じましたが、プロセスが続いているようです。私が言うことができるのは、ファンがまだ機能していることを確認できることです。
次のコマンドを実行しましたが、そのいずれも機能しませんでした。
pkill yes
pkill yes\ \<defunct\>
(completionを使用したときに発生Tab)killall -9 yes
pkill zsh
killall -9 zsh
大きなファイルが別のコンピュータにコピーされていて、プロセスを再起動したくないため、コンピュータを再起動できません。
これは私のtop
結果です。
top - 16:06:16 up 7:41, 3 users, load average: 1,49, 1,33, 1,02
Tasks: 305 total, 3 running, 301 sleeping, 0 stopped, 1 zombie
%Cpu(s): 53,8 us, 2,5 sy, 0,0 ni, 43,5 id, 0,0 wa, 0,0 hi, 0,2 si, 0,0 st
KiB Mem: 6009896 total, 5897432 used, 112464 free, 17152 buffers
KiB Swap: 7811068 total, 280 used, 7810788 free. 2225944 cached Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
24814 john 20 0 2367448 2,219g 3896 R 98,9 38,7 12:29.00 zsh
2134 john 20 0 1576256 117104 69868 S 2,7 1,9 2:44.03 compiz
1163 root 20 0 311032 66020 25016 S 2,3 1,1 9:28.03 Xorg
25428 john 20 0 30220 3800 3008 S 2,0 0,1 0:08.48 htop
408 root -51 0 0 0 0 S 1,3 0,0 4:25.59 irq/32-iwl+
25359 john 20 0 581928 31888 25080 S 1,3 0,5 0:00.92 gnome-term+
2051 john 20 0 653056 32296 23640 S 1,0 0,5 0:05.72 unity-pane+
25479 john 20 0 29276 3164 2544 R 0,7 0,1 0:00.04 top
819 message+ 20 0 40748 4044 2372 S 0,3 0,1 0:04.27 dbus-daemon
1995 john 20 0 363388 10984 5828 S 0,3 0,2 0:20.36 ibus-daemon
2049 john 20 0 39252 3544 3016 S 0,3 0,1 0:00.27 dbus-daemon
2103 john 20 0 205408 6516 5936 S 0,3 0,1 0:05.65 ibus-engin+
2157 john 20 0 551436 10652 8376 S 0,3 0,2 0:01.35 indicator-+
24009 nobody 20 0 275852 14904 12260 S 0,3 0,2 0:23.73 smbd
24536 root 20 0 0 0 0 S 0,3 0,0 0:00.33 kworker/u8+
1 root 20 0 33888 4452 2720 S 0,0 0,1 0:01.67 init
2 root 20 0 0 0 0 S 0,0 0,0 0:00.00 kthreadd
これは私のps aux | grep yes
結果です。
$ ps aux | grep yes
john 25004 0.1 0.0 0 0 ? Z 15:53 0:01 [yes] <defunct>
john 25603 0.0 0.0 15976 2220 pts/25 S+ 16:13 0:00 grep --color=auto yes
答え1
この回答stackoverflowに関するBill Karwinの記事は、あなたが探しているものです。
プロセスを終了しましたが、親プロセスが「収穫」というアクションを実行するまで(基本的にプロセスが終了ステータスを読み取ることができるようにwait(3)を呼び出す)、死んだプロセスはプロセステーブルから消えません。まだリサイクルされていない死んだプロセスを「ゾンビプロセス」と呼びます。
表示される親プロセスID 31756は、常にinitに属するプロセスID 1です。プロセスは定期的にゾンビを取得する必要がありますが、そうでない場合は、再起動するまでプロセステーブルにゾンビとして残ります。
この例外を除いて、親プロセスは zsh です。 kill -9
zshプロセスと死んだプロセスはyes
消えます。
htop
プロセスの所有権階層をよりよく理解するには、ビューを使用します(フラット/階層遷移ビューを使用t)。
答え2
それ以降killall -9 yes
、またはそれ以降もプロセスは終了しますkillall yes
。状態のプロセスがyes
命令名の後に表示される場合、これはプロセスではなくゾンビプロセスです。ps
Z
<defunct>
ゾンビは死んだもはやそれらを殺すことはできません。
ここで何が起こるのかは、yes
プロセスが終了したことです。これ以上入力は生成されません。しかし、コマンド置換を実行するシェルプロセスは、大量のデータを読み取ってメモリへの割り当てに非常に忙しい(そして大量のデータを非常に効率的に処理できない可能性があります)。
(Linux構文)を実行してps -C yes l
親プロセスを確認しますyes
。あなたが殺すべき人はまさにこの人です。これを調べるもう1つの方法は、この出力がtop
CPU時間の98.9%を占めていることです。