我怎样才能杀死我的反引号是进程?

Exe*_*n-G 4 process kill zsh

我在我的终端里玩,它运行zsh. 我输入了以下内容:

$ `
bquote> yes
bquote> `
Run Code Online (Sandbox Code Playgroud)

然后,yes开始在后台运行,我想。无论是Ctrl+C也Ctrl+\合作终止进程。我关闭了终端,但这个过程似乎还在继续。我只能说我可以确认我的风扇还在工作。

我已经运行了以下命令,这些命令也不起作用:

  • pkill yes
  • pkill yes\ \<defunct\>(使用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    
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)

tar*_*leb 5

Bill Karwin 在 stackoverflow 上的这个答案正是您要找的:

您已经杀死了该进程,但是一个死进程不会从进程表中消失,直到其父进程执行称为“收割”的任务(本质上调用 wait(3) 以便该进程读取其退出状态)。没有被收割的死进程被称为“僵尸进程”。

您看到的 31756 的父进程 ID 是进程 ID 1,它始终属于 init。该进程应该定期获取其僵尸进程,但如果不能,它们将在进程表中保持僵尸进程,直到您重新启动。

除了这种情况,父进程是 zsh。 kill -9zsh 进程和已失效的进程yes将消失。

查看htop以更好地掌握流程所有权层次结构(使用 切换平面/层次视图t)。