bash
我的 Ubuntu Linux (12.04) 上运行着很多进程。即使我关闭终端,它们仍然显示在System Monitor
.
我尝试按如下方式杀死它们,但它们仍然保持原样。如何诊断问题,为什么不能终止?
user$ ps aux | grep bash
user 2807 0.0 0.0 9484 56 pts/20 Ss+ Mar18 0:00 /bin/bash
user 4431 0.0 0.1 9228 5616 pts/7 Ss 10:39 0:00 bash
user 4655 0.0 0.0 4372 844 pts/7 R+ 10:45 0:00 grep --color=auto --exclude-dir=.svn bash
user 5664 0.0 0.0 12764 12 pts/6 Ss Feb05 0:01 /bin/bash
user 5812 99.6 0.1 11276 7088 ? Rs Sep22 3923:00 bash
user 6174 0.0 0.0 13016 28 pts/19 Ss+ Feb13 0:04 /bin/bash
p 10964 0.0 0.0 11700 28 pts/2 Ss+ Feb11 0:01 bash
p 11126 0.0 0.0 7952 560 pts/3 Ss+ Feb11 0:00 bash
user 18195 0.0 0.0 17320 344 pts/9 Ss+ Apr22 0:29 /bin/bash
user 21721 0.0 0.0 15924 4 pts/10 Ss+ Feb01 0:10 /bin/bash
user 22915 4.7 0.3 19400 13056 pts/22 Rs+ Jul29 3950:07 /bin/bash
user 24030 0.0 0.0 13740 4 pts/23 Ss+ Mar24 0:15 /bin/bash
user 29787 0.0 0.1 9220 5572 pts/11 Ss+ Sep23 0:00 /bin/bash
user$
user$ pkill -f bash
pkill: 10964 - Operation not permitted
pkill: 11126 - Operation not permitted
user$ sudo pkill -f bash
user$
user$ ps aux | grep bash
user 2807 0.0 0.0 9484 56 pts/20 Ss+ Mar18 0:00 /bin/bash
user 4431 0.0 0.1 9228 5616 pts/7 Ss 10:39 0:00 bash
user 4660 0.0 0.0 4372 844 pts/7 R+ 10:45 0:00 grep --color=auto --exclude-dir=.svn bash
user 5664 0.0 0.0 12764 12 pts/6 Ss Feb05 0:01 /bin/bash
user 5812 99.6 0.1 11276 7088 ? Rs Sep22 3923:21 bash
user 6174 0.0 0.0 13016 28 pts/19 Ss+ Feb13 0:04 /bin/bash
p 10964 0.0 0.0 11700 28 pts/2 Ss+ Feb11 0:01 bash
p 11126 0.0 0.0 7952 560 pts/3 Ss+ Feb11 0:00 bash
user 18195 0.0 0.0 17320 344 pts/9 Ss+ Apr22 0:29 /bin/bash
user 21721 0.0 0.0 15924 4 pts/10 Ss+ Feb01 0:10 /bin/bash
user 22915 4.7 0.3 19400 13056 pts/22 Rs+ Jul29 3950:29 /bin/bash
user 24030 0.0 0.0 13740 4 pts/23 Ss+ Mar24 0:15 /bin/bash
user 29787 0.0 0.1 9220 5572 pts/11 Ss+ Sep23 0:00 /bin/bash
答案1
请注意,“不可杀死”的 bash 进程正在以用户身份运行p
:
user 6174 0.0 0.0 13016 28 pts/19 Ss+ Feb13 0:04 /bin/bash
p 10964 0.0 0.0 11700 28 pts/2 Ss+ Feb11 0:01 bash
p 11126 0.0 0.0 7952 560 pts/3 Ss+ Feb11 0:00 bash
user 18195 0.0 0.0 17320 344 pts/9 Ss+ Apr22 0:29 /bin/bash
您正在以 user 身份运行user
,因此您不能直接终止 user 的任何进程p
。
如果您有sudo
访问权限,则可以以 root 或普通用户身份发出终止命令p
。对于可能是旧用户会话的事情,使用kill -HUP
比仅仅使用更好kill
,因为它允许编辑器等在退出之前保存任何未保存工作的备份。此外,交互式 shell 进程(即旧会话)可以不受常规 Shell 进程的影响kill
,但kill -HUP
对它们来说工作得很好。
以用户身份发出kill命令p
:
user$ sudo -u p kill -HUP 10964 11126
或使用根电源:
user$ sudo kill -HUP 10964 11126
对于以 user 身份运行的进程p
,以 user 身份发出的kill命令p
与 root 发出的kill命令一样强大:即使是普通用户也对他们自己拥有的任何进程的生死拥有完全的权力。
答案2
您不认为您无法杀死系统中的 bash 吗?您在 bash 中运行应用程序/程序,并且可以终止在 bash 中运行的程序。现在您可以找到在 bash 中运行的所有进程 ID 程序。正如您在终端上所示:
> user 4660 0.0 0.0 4372 844 pts/7 R+ 10:45 0:00 grep > --color=auto --exclude-dir=.svn bash
尝试终止该进程:
sudo kill 4660
或者
sudo kill -9 4660
让我知道发生了什么