您是否遇到过这样的情况:您启动了一个应用程序,但在使用该应用程序时突然变得无响应并意外崩溃?您尝试再次启动应用程序,但没有任何反应,因为原始应用程序进程从未真正完全关闭。
好吧,我们所有人都曾在某个时刻发生过这种事,不是吗?解决方案是终止或终止应用程序进程。但如何呢?
幸运的是,Linux 中有几个实用程序可以让您终止错误的进程。
在这篇文章中,我们将向您展示如何使用kill
, killall
, and pkill
Linux 中终止进程的命令。
这些工具之间的主要区别在于kill
根据进程 ID 号 (PID) 终止进程,而killall
and pkill
命令根据进程的名称和其他属性终止正在运行的进程。
普通用户可以杀死自己的进程,但不能杀死属于其他用户的进程,而 root 用户可以杀死所有进程。
系统终止信号#
kill
, killall
, and pkill
向指定进程或进程组发送给定信号。当没有指定信号时,每个工具都会发送15
(TERM
).
最常用的信号是:
-
1
(-HUP):重新加载进程。
-
9
(-KILL):终止进程。
-
15
(-TERM):优雅地停止进程。
信号可以通过三种不同的方式指定:
- 使用数字(例如 -1)
- 带有“SIG”前缀(例如-SIGHUP)
- 没有“SIG”前缀(例如-HUP)。
Use the -l
列出所有可用信号的选项:
kill -l # or killall -l
下面概述的步骤适用于所有 Linux 发行版。
使用终止进程kill
命令#
终止一个进程kill首先,你需要找到进程PID。您可以使用不同的命令来执行此操作,例如top
, ps
, pidof
, and pgrep
.
假设 Firefox 浏览器没有响应,您需要终止浏览器进程。要查找进程 ID,请使用pidof命令:
pidof firefox
该命令将打印所有 Firefox 进程:
2551 2514 1963 1856 1771
一旦您知道 Firefox 会处理 PID 并终止所有这些 PID,请发送TERM
signal:
kill -9 2551 2514 1963 1856 1771
使用终止进程killall
命令#
The killall
命令终止与指定名称匹配的所有程序。
使用与之前相同的场景,您可以通过键入以下内容来终止 Firefox 进程:
killall -9 firefox
killall
接受多个选项,例如向给定用户拥有的进程发送信号、根据正则表达式匹配进程名称以及创建时间。您可以通过键入以下内容获取所有选项的列表killall
(不带任何参数)在您的终端上。
例如,要终止以用户“sara”身份运行的所有进程,您可以运行以下命令:
sudo killall -u sara
使用终止进程pkill
命令#
pkill终止与命令行上给出的模式匹配的进程:
pkill -9 firefox
进程的名称不必完全匹配。
With pkill
您还可以向给定用户拥有的进程发送信号。要仅终止用户“sara”拥有的 Firefox 进程,您可以输入:
pkill -9 -u sara firefox
结论#
使用以下命令终止无响应的程序kill
, killall
and pkill
命令是一项简单的任务。您只需要知道进程名称或PID。
如果您有任何问题或反馈,请随时发表评论。