如何从Linux终端杀死进程

有时杀死一个进程是消除它的唯一方法。尽管名字很刺耳,“杀死”一个进程只意味着“迫使它退出”。以下是如何从Linux或MacOS命令行执行此操作。

什么是过程?

运行Web浏览器等程序、与桌面环境关联的后台进程以及Linux系统服务都是进程。

您可以将流程集中到两组中:

前台进程是由用户启动或启动的进程。它们可以在终端窗口中,也可以是图形应用程序。 后台进程是所有自动启动且与用户没有任何交互的进程。他们不期望来自用户的输入,也不向他们展示结果或输出。后台进程是服务和守护进程之类的东西。

如果前台进程是剧场工作人员和演员的前台,那么后台进程就是后台“幕后”团队。

当进程行为不正确或出现故障时,它们可能会占用太多的CPU时间,消耗您的RAM,或者进入紧凑的计算循环而变得没有响应。图形应用程序可能会拒绝响应鼠标单击。终端应用程序可能永远不会让您返回命令提示符。

人性化的答案

“杀死”一个进程只是意味着“迫使该进程退出”。如果进程拒绝响应,这可能是必要的。

Linux提供KILL、PKILL和KILLALL命令来允许您这样做。这些命令可以与任何类型的进程、图形或命令行、前台或后台一起使用。

KILL命令

要使用KILL,您必须知道要终止的进程的进程ID(PID)。ps命令可用于查找进程的PID。

要让ps搜索所有进程,请使用-e选项(所有进程)。通过更少的管道输出是明智的,将会有相当多的输出。键入ps(空格)、-e(空格)、|(管道字符)和另一个空格,然后键入less。按Enter键执行该命令。

ps -e | less

这将为您提供一个类似于以下屏幕截图的流程列表。使用/键可以向前搜索LESS,使用?键可以向后搜索。钥匙。

要深入了解您感兴趣的进程,可以通过grep管道传输ps的输出,并指定进程的名称(或名称的一部分)。

ps -e | grep shutter

找到要终止的进程的PID后,将其作为参数传递给kill命令。要终止由前一个命令标识的快门进程,请使用以下命令:

kill 2099

KILL命令是一个静默的刺客-如果成功,它不会给您任何反馈。

pkill命令

pkill命令允许您按名称终止一个或多个进程。您不需要通过PID标识进程。要使用pkill,您需要提供一个搜索词,pkill使用该搜索词检查正在运行的进程列表。匹配的进程将终止。所以你需要肯定你的搜索词拼写是正确的。

作为安全网,您可以在使用pkill命令之前使用pgrep命令。pgrep命令还接受搜索词。它将列出与搜索词匹配的每个进程的PID。这是安全的,因为pgrep不会向进程发出任何终止信号,如果您输入了错误的搜索词,也不会错误地终止另一个进程。在将搜索词传递给pkill之前,您可以确保已经正确考虑了搜索词。pkill和pgrep都以相同的方式处理搜索词。他们的待遇如此相似,以至于他们共享同一个手册页。

让我们假设有一个名称中带有“subq”的进程。我们将使用ps-u dave|grep命令来窥探幕后情况。您可以看到“subq”将匹配该进程,并且仅匹配该进程。这只是为了让您可以看到该进程的全名。

ps -u dave | grep subq

让我们假设我们的用户没有这样做;他们只知道进程名包含子字符串“subq”。他们使用pgrep检查是否只有一个匹配的搜索词。然后,他们将该搜索词与pkill一起使用。

pgrep subq pkill subq

您可以使用pkill一次杀死多个进程。在这里,用户运行pgrep来检查Chrome已经启动了多少进程。他们用pkill把他们都杀了。然后,他们与pgrep检查它们是否都已被删除。

pgrep chromepkill chromepgrep chrome

如果有几个同名的进程正在运行,但您不想将它们全部杀死,则可以使用带有-f(命令行)选项的pgrep来识别哪个进程是哪个进程。一个简单的示例是两个ping进程。你想杀了他们中的一个但不想杀另一个。您可以使用它们的命令行来区分它们。请注意使用引号将命令行参数括起来。

pgrep -f "ping 192.168.4.22"pkill -f "ping 192.168.4.22"

KILLALL命令

警告:在Solaris和OpenIndiana操作系统中,KILLALL命令将杀死属于您的所有进程。如果您是root用户,或者如果您已经发出了sudo KILLALL命令,您将重新启动您的计算机!在本文的研究过程中,这一行为在最新版本的OpenIndiana Hipster 2018.10中得到了证实。

KILLALL命令的操作方式与pkill命令相似,但有特定的不同之处。您必须提供确切的进程名称,而不是将搜索词传递给命令。

您不能提供与进程名称的部分匹配;您必须提供整个进程名称,如下所示:

killall shuttkillall shutter

-y(小于)选项允许您终止运行时间少于指定时间的进程。该句点以数字形式给出,后跟以下单位之一:

s(秒)。 M(分钟)。 小时(小时)。 D(天数)。 W(周)。 M(月,票据,大写“M”)。 Y(年)

要终止刚刚启动的名为ana的进程,并使任何较早的ana实例保持运行,如果您在两分钟内做出反应,则可以对KILLALL使用以下参数:

killall -y 2m ana

-o命令(早于)选项允许您终止运行时间超过指定时间的进程。此命令将终止运行超过一天的所有ssh连接:

killall -o 1d sshd

别太激动了,开心

这些命令将允许您准确、安全地识别和终止错误进程。

永远要小心。首先,确保您将要终止的进程确实是您想要的进程。第二,仔细检查-要小心,并确保目标流程是您想要结束的流程。一旦您满意,就继续终止该过程。

相关文章