kill 2200
,其中2200是我的PID,并且该进程未终止。几分钟后,仍在top
和ps aux
中等待。 我什至尝试用sudo键入它-没有结果。
有什么主意为什么会这样?
编辑
我发现了一个怪异的依赖项,其中
fg
更新了进程列表:x@xxx:/etc/grub.d$ ps
PID TTY TIME CMD
1723 pts/0 00:00:00 bash
2200 pts/0 00:00:00 top
2202 pts/0 00:00:00 top
2258 pts/0 00:00:00 ps
x@xxx:/etc/grub.d$ fg
top
x@xxx:/etc/grub.d$ ps
PID TTY TIME CMD
1723 pts/0 00:00:00 bash
2200 pts/0 00:00:00 top
2620 pts/0 00:00:00 ps
x@xxx:/etc/grub.d$ fg
top
x@xxx:/etc/grub.d$ ps
PID TTY TIME CMD
1723 pts/0 00:00:00 bash
2621 pts/0 00:00:00 ps
#1 楼
进程可以忽略某些信号。如果发送SIGKILL,它将无法忽略它(也不会捕获它进行清理)。请尝试:kill -9 {PID}
通过阅读手册页了解更多信息:
man kill
评论
还应注意,在某些非常特定的情况下,进程可能处于僵尸/已失效状态,即使SIGKILL也无法终止该进程。在这种情况下,您将必须找到父进程并杀死父进程。
– Lie Ryan
2011年9月3日11:49
如果该过程不合时宜,那就是杀九点!
–斯科特
2011年9月5日下午4:22
有时没有父进程,在这种情况下您就被搞砸了。删除此类过程的唯一方法是重新引导计算机。
–user606723
2011年9月6日15:25
kill命令的名称继续对许多用户(包括我一开始)造成误导。人们以为,当您说“杀死X”时,这意味着真的杀死X而不做其他事情。我知道这不会改变任何事情,但我希望他们选择一个更精致的名称...
–rbaleksandar
15年7月17日在14:08
即使在kill -9之后仍然不起作用,并且该过程仍然存在,该怎么办?
–道格拉斯·加斯凯(Douglas Gaskell)
18年8月8日在5:44
#2 楼
如果不带任何参数调用kill
,它将发送信号号15(SIGTERM
)。该信号可以被过程忽略。该信号通知清理自己的东西然后自己正确结束的过程。这是很好的方法。您也可以“发送”信号号9(
SIGKILL
),该信号不能被进程忽略。进程甚至无法识别它,因为内核结束了进程,而不是进程本身。那是邪恶的方法。有人说
kill -9 <pid>
总是有效的。那是个误会。在某些情况下,即使kill -9
也无法终止该进程。例如,当进程的状态为D
(不间断睡眠)时。进程每次等待I / O时都会进入此状态(通常不很长)。因此,如果某个进程等待I / O(例如,在有缺陷的硬盘上),并且未正确编程(带有超时),那么您根本无法终止该进程。无论你做什么。您可以尝试使该文件可访问,以使该过程继续进行。评论
这非常有用,由于挂在网络磁盘上的I / O访问而使我经历了几次,我想知道为什么我不能杀死冻结的进程。是否有关于此特定问题的更多文档以及如何解决?
–乔纳森·H
14年7月6日在20:13
#3 楼
尽管它的名字是kill,但实际上并没有杀死进程,而是向它发送信号。从手册页:kill - send a signal to a process
kill [pid]
发送的默认信号是SIGTERM,通常但不一定要求过程终止。向您发送SIGTERM信号时,很有可能编写一个播放乐曲的程序,但不建议这样做。另一个常见信号是SIGHUP,通常用于要求程序重新读取其配置文件。
如果您真的想杀死程序,则需要通过执行
kill -9 [pid]
使用SIGKILL信号。#4 楼
听起来您可能正在挂起一个进程(也许通过在终端中按Ctrl-Z)。在这种状态下,由于冻结,您的进程将不会响应SIGTERM。运行“ fg”将解冻该过程,因此它可以拾取信号并自行终止。这可以解释为什么'fg'似乎会更新进程列表。评论
那么如何找到附属的终端呢?
–ruX
13年3月21日在16:58
#5 楼
这就是我过去在80端口上运行localhost的方法(按角度cli)在80端口上获取运行的应用程序信息运行过程
#6 楼
在C ++中,我执行了:kill(4024, SIGKILL);
在linux(Ubuntu)终端上,
$ ps -ax | grep my_su
输出为:
4024 pts/1 Z+ 0:00 [my_subscriber] <defunct>
看似,它(4024)仍然存在。但是,当我终止调用上面“ kill”语句的父进程时,4024不再出现。现在,我判断“已终止”过程不过是显示的一行而决定忽略它。我希望我的经验可以帮助某个人。干杯!
#7 楼
您还可以使用kill -l
来显示体系结构支持的信号,并了解有关可能希望用来正确发送信号的信号的更多信息。除非它是僵尸程序,否则不建议使用kill -9 {PID}
。进程收到SIGKILL后,将立即关闭,而无需进行清洁或任何其他适当步骤。
评论
那是什么过程?您是否检查过该过程是否已终止?在这种情况下,您需要终止父进程。该过程位于顶部(如编辑中所列)。我只是想尝试将程序置于后台运行,然后再将其恢复。
如果您使用CTRL-z暂停进程,则只要暂停该进程,它就会阻止大多数信号(即直到对该进程执行fg或bg为止)