如何在 Linux 中终止进程如何在 Linux 中终止进程如何在 Linux 中终止进程如何在 Linux 中终止进程
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容

如何在 Linux 中终止进程

发表 admin at 2025年2月28日
类别
  • 未分类
标签

每个Linux 操作系统都带有kill 命令。该工具的唯一目的是终止目标进程。它是一个强大的工具,使 Linux 变得非常通用,特别是在服务器和企业领域,重大更改/更新无需重新启动整个机器即可生效。在本文中,我将展示如何使用 kill、pkill 和 killall 终止进程。

杀死一个进程

为了终止进程,我们将使用一些工具:kill、pkill 和 killall。它们的工作方式基本相同。

这些工具本身不会终止进程。相反,它们向目标进程或进程组发送指定信号。如果您没有指定任何特定信号,则 SIGTERM 将作为默认信号发送。然而,有许多支持的信号,例如 SIGKILL、SIGHUP 等。

以下是 kill、pkill 和 killall 的基本命令结构。

$ kill <signal_or_options> <PID(s)>
$ pkill <signal_or_options> <process_name>
$ killall <option> <process_name>

只要有可能,建议使用kill。

杀死、pkill 和杀死位置

Kill 是终止进程的默认命令。

$ kill --help

它从 /usr/bin 目录运行。

$ which kill

好处是,它还允许访问 pkill,这是另一个类似于 Kill 的命令,允许根据进程名称终止进程。

$ pkill --help
$ which pkill

某些应用程序运行同一可执行文件的多个进程。如果要终止多个同名进程,请使用killall 工具。

$ killall --help
$ which killall

列出所有正在运行的进程

第一个任务是识别 PID(进程标识号)和/或您想要终止的进程名称。在本例中,我将使用 Firefox 作为要终止的目标进程。运行以下命令列出系统上所有正在运行的进程。

$ ps -A

对于大多数任务,我们需要知道目标进程的PID。然而,在某些情况下,使用进程名称更合适。

如果您知道目标进程的确切名称,则可以使用pidof直接获取PID。

$ pidof <process_name>

另一个获取目标进程信息的有趣工具是 pgrep。它是专门为此目的而设计的。

$ pgrep <option> <process_name>

杀戮信号

现在,我们来看看kill工具支持的信号。这是一个巨大的清单。当然,并非所有这些对于每种情况都是必要的。事实上,大多数情况只需要少量信号。

首先我们看一下kill支持的列表。

$ kill -l

有两种方法可以定义要发送的信号。您可以使用完整的信号名称或其等效值。

$ kill -<signal> <PID>

或者,

$ kill -<signal_value> <PID>

最流行的信号是 SIGHUP (1)、SIGKILL (9) 和 SIGTERM (15)。通常,SIGTERM 是终止目标进程的默认且最安全的方法。

对于pkill,支持的信号与kill 相同。然而,在killall的情况下,支持的信号数量和信号名称是不同的。

$ killall -l

杀死一个进程

要杀死一个进程,我们需要该目标进程的 PID。假设您有 PID,请运行以下命令来终止它。

$ kill <option> <PID>

在这里,kill 将向 PID 发送默认信号 SIGTERM。如果您想终止多个进程,请提及所有以空格分隔的 PID。

$ kill <option> <PID_1> <PID_2>

让我们指定您想要发送到目标的信号。

想要仅使用进程名称来终止进程吗?使用 pkill。

$ pkill <option> <process_name>

在某些情况下,特定应用程序可能运行太多进程。输入所有这些 PID 既耗时又烦人。在这种情况下,我们将使用killall 工具。它与kill 非常相似,但它适用于进程名称。

$ killall <option> <process_name>

例如,当运行 Firefox 时,它会启动一些进程。要立即杀死所有它们,请运行此命令。

$ killall firefox

想要终止某个用户下运行的所有进程吗? Killall 可以完成这项工作,没问题。运行此程序时要小心,因为它可能会破坏系统并产生其他问题。如果您尝试终止在具有更高权限的不同用户下运行的进程,它将不起作用。

$ killall -u <user>

权限冲突

当您要终止应用程序时,Linux 用户层次结构的固有特征也适用。用户无法终止以较高权限运行的进程,只能终止具有同等/较低权限的进程。此外,用户无法操纵在不同用户下运行的进程。

例如,让我们考虑 yes 命令。如果以当前用户身份调用,则可以使用kill轻松终止它。

$ kill yes

现在,如果 yes 在 root 下运行怎么办?以当前用户身份调用kill 是行不通的。

同样,如果进程在另一个用户下运行,您无法从不同的用户帐户终止它。

最后的想法

在本文中,仅展示了这些命令的基础知识和常见用法。这些杀毒工具的功能远不止这些。要深入了解任何工具的功能,我建议查看手册页。

$ man kill
$ man pkill

享受!

©2015-2025 Norria support@norria.com