我在我的终端里玩,它运行zsh. 我输入了以下内容:
$ `
bquote> yes
bquote> `
Run Code Online (Sandbox Code Playgroud)
然后,yes开始在后台运行,我想。无论是Ctrl+C也Ctrl+\合作终止进程。我关闭了终端,但这个过程似乎还在继续。我只能说我可以确认我的风扇还在工作。
我已经运行了以下命令,这些命令也不起作用:
pkill yespkill yes\ \<defunct\>(使用Tab完成时出现)killall -9 yespkill zshkillall -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
Run Code Online (Sandbox Code Playgroud)
这是我的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
Run Code Online (Sandbox Code Playgroud)
Bill Karwin 在 stackoverflow 上的这个答案正是您要找的:
您已经杀死了该进程,但是一个死进程不会从进程表中消失,直到其父进程执行称为“收割”的任务(本质上调用 wait(3) 以便该进程读取其退出状态)。没有被收割的死进程被称为“僵尸进程”。
您看到的 31756 的父进程 ID 是进程 ID 1,它始终属于 init。该进程应该定期获取其僵尸进程,但如果不能,它们将在进程表中保持僵尸进程,直到您重新启动。
除了这种情况,父进程是 zsh。 kill -9zsh 进程和已失效的进程yes将消失。
查看htop以更好地掌握流程所有权层次结构(使用 切换平面/层次视图t)。