如何在 Linux 中终止进程?

2025年3月17日 | 阅读 7 分钟

在操作系统中,有许多程序在计算机的 RAM 中运行。这些程序可以由操作系统本身或用户运行,这些程序被称为“进程”。通常,进程有其生命周期,并在完成或我们手动退出时自行终止。但是,有时,由于进程调度错误,或者因为消耗大量 RAM 或 CPU,进程可能会挂起。在这种情况下,我们需要手动终止进程,以防止我们的机器发生意外挂起。

Linux 提供了多种工具来终止出错的进程。为了终止进程,我们必须拥有进程信息,例如PID、信号等

定位进程

要终止进程,我们必须访问进程信息。有各种命令可以跟踪进程,例如toppspgreppidof

Linux 系统允许我们通过多种方式终止进程,例如按名称或进程 ID (PID) 终止进程。因此,我们将根据需要使用上述命令。

使用 'top' 命令定位进程

top命令用于列出 Linux 系统中所有正在运行的进程。它显示详细信息,如 PID、用户名、CPU 使用率、时间、执行的命令等。

要定位进程,请按如下方式执行命令

上面的命令将显示正在运行的进程。请看下面的输出

Kill Process Linux

我们可以通过在终端中上下滚动来浏览进程。top 命令提供了各种过滤器来过滤进程,例如进程名称、CPU 使用率等。要退出 top 部分,请按'q'键,它将返回到终端。但是,我们也可以通过按CTRL+ C键来使用传统的退出选项。

使用 ps 和 grep 命令定位进程

ps命令是显示进程信息的另一种方式。ps 命令有许多选项,例如aux,表示

a : 显示所有用户的进程

u : 显示特定用户使用的进程

x : 显示所有进程。如果不指定 x 选项,它将不会显示 GUI 进程。

执行以下命令列出所有正在运行的进程

考虑下面的输出

Kill Process Linux

ps 命令的输出与top命令类似。进程名称和 PID 出现在前两列,进程名称出现在最右边的列。

ps 命令比 top 命令更有用。它允许我们使用 grep 命令过滤输出。

假设我们要过滤所有用户名为 javatpo+ 的进程,请按如下方式执行命令

上面的命令将通过 grep 命令过滤所有指定的进程。请看下面的输出

Kill Process Linux

上面的输出结合了 ps 命令和 grep 命令的功能。

使用 pidof 和 pgrep 命令定位进程

pidof命令也允许我们定位进程。如果我们想通过进程名称跟踪进程,pidof 命令将非常有用。当与进程名称一起使用时,它会显示进程的 PID。

要定位进程的 PID,请按如下方式执行 pidof 命令

如果我们有一个名称与chrome完全相同的正在运行的进程,请按如下方式执行命令以获取其 PID。

考虑以下输出:

Kill Process Linux

终止进程

既然我们已经跟踪了进程,我们就可以终止进程了。有各种命令用于终止进程,例如killkilltoppkill

在终止进程之前,了解我们可以终止哪些进程至关重要。以下是有关终止进程的一些要点

  • 如果您是普通用户,那么您只能终止属于您的进程。您不能终止其他用户运行的进程。topps aux命令显示与进程相关的用户。
  • root 用户可以终止所有进程。但是,我们也可以在任何命令前添加 sudo 以 root 身份执行它。
  • 在 Linux 中,当一个进程被终止时,一个特殊的信号会被发送到进程。虽然 Linux 中有各种类型的信号,但在这种情况下,Linux 处理SIGKILLSSIGTERM信号。默认情况下,Linux 发送 SIGTERM,它会优雅地终止进程。如果您想强制终止进程,请改用 SIGKILL。
  • Linux 会保留进程的状态,直到它完全从系统中删除。因此,子进程将在父进程被删除之前显示在进程列表中。
  • 如果进程处于“不可中断睡眠”状态,则无法终止它。当进程执行输入/输出操作时,会出现这种情况。此状态可以在top和 ps aux 命令的第 8 列中看到。

使用 killall 命令终止进程

如果您知道确切的进程名称,并且该进程没有被其他用户运行,并且不在 Z 或 D 状态,那么 killall 命令是最简单的终止进程的技术。在 kill all 命令中,无需定位进程或 PID。要终止进程,请按如下方式执行命令

上面的命令将终止进程并退出 firefox 浏览器。请看下面的输出

Kill Process Linux

如果命令成功终止了进程,它将不会产生任何输出。

要强制终止进程,请按如下方式执行 killall 命令并带上 -SIGKILL

我们也可以使用 -9 代替 -SIGKILL。

要交互式地终止进程,请按如下方式执行命令

要以其他用户的身份终止进程,请按如下方式执行命令

我们还可以使用-o-y标志来按固定时间段终止进程。要终止已运行超过 20 分钟的进程,请执行以下命令:killall -o 20m process_name

要终止已运行不到 20 分钟的进程,请执行以下命令

时间段使用的缩写如下

秒:s

分钟:m

小时:h

天:d

周:w

月:M

年:y

使用 pkill 命令终止进程

有时我们不知道进程的确切名称;在这种情况下,pkill 命令将是最有用的工具来终止进程。它允许我们通过输入匹配的进程名称来终止进程。例如,我们要终止所有名称匹配 java 的进程,请按如下方式执行命令

这将关闭所有名称中包含 java 的进程。同样,要终止 firefox 进程,请按如下方式执行命令

考虑下面的输出

Kill Process Linux

如果 pkill 命令成功执行,它将不会显示任何输出。

要使用 pkill 命令强制终止进程,请按如下方式执行

使用 kill 命令终止进程

kill 命令是终止进程的最简单的实用程序;我们只需要进程的 PID。一旦我们获得进程的 PID,就是一个直接的过程。要终止进程,请执行 kill 命令后跟 PID。要定位进程的 PID,请使用 top 或 ps aux 命令,如上所述。

要终止 PID 为 5296 的进程,请按如下方式执行命令

要强制终止进程,请使用 -SIGKILL 或 -9 选项

上面的命令将终止 PID 为 5296 的进程。

使用 top 命令终止进程

top 命令允许我们定位和终止进程。使用 top 命令终止进程是一个直接的过程。首先,执行 top 命令定位进程,然后在命令运行时按'k'键。它将使您进入进程终止模式,输入要终止的进程的 PID。请看下面的输出

Kill Process Linux

从上面的输出可以看到,有一个选项"PID to signal/kill"用于从上面的进程列表中终止进程。输入进程的 PID,然后按ENTER键。

如果 PID 为空,它将终止最顶部的进程。

使用系统监视器终止进程

我们还可以通过 Linux 的图形环境称为系统监视器来终止进程。要通过系统监视器终止进程,请按照以下步骤操作

步骤 1:搜索或浏览系统监视器,按 Enter 打开它。

步骤 2:它将列出您 Linux 系统中所有正在运行的进程。请看下面的图像

Kill Process Linux

步骤 3:浏览进程,然后右键单击您想要终止的进程。

步骤 4:选择 Kill 选项。我们也可以使用CTRL+K键来终止它。


下一主题Linux 终止