如何在 Linux 中终止进程
每个Linux 操作系统都带有kill 命令。该工具的唯一目的是终止目标进程。它是一个强大的工具,使 Linux 变得非常通用,特别是在服务器和企业领域,重大更改/更新无需重新启动整个机器即可生效。在本文中,我将展示如何使用 kill、pkill 和 killall 终止进程。
杀死一个进程
为了终止进程,我们将使用一些工具:kill、pkill 和 killall。它们的工作方式基本相同。
这些工具本身不会终止进程。相反,它们向目标进程或进程组发送指定信号。如果您没有指定任何特定信号,则 SIGTERM 将作为默认信号发送。然而,有许多支持的信号,例如 SIGKILL、SIGHUP 等。
以下是 kill、pkill 和 killall 的基本命令结构。
$ pkill <signal_or_options> <process_name>
$ killall <option> <process_name>
只要有可能,建议使用kill。
杀死、pkill 和杀死位置
Kill 是终止进程的默认命令。
它从 /usr/bin 目录运行。
好处是,它还允许访问 pkill,这是另一个类似于 Kill 的命令,允许根据进程名称终止进程。
某些应用程序运行同一可执行文件的多个进程。如果要终止多个同名进程,请使用killall 工具。
列出所有正在运行的进程
第一个任务是识别 PID(进程标识号)和/或您想要终止的进程名称。在本例中,我将使用 Firefox 作为要终止的目标进程。运行以下命令列出系统上所有正在运行的进程。
对于大多数任务,我们需要知道目标进程的PID。然而,在某些情况下,使用进程名称更合适。
如果您知道目标进程的确切名称,则可以使用pidof直接获取PID。
另一个获取目标进程信息的有趣工具是 pgrep。它是专门为此目的而设计的。
杀戮信号
现在,我们来看看kill工具支持的信号。这是一个巨大的清单。当然,并非所有这些对于每种情况都是必要的。事实上,大多数情况只需要少量信号。
首先我们看一下kill支持的列表。
有两种方法可以定义要发送的信号。您可以使用完整的信号名称或其等效值。
或者,
最流行的信号是 SIGHUP (1)、SIGKILL (9) 和 SIGTERM (15)。通常,SIGTERM 是终止目标进程的默认且最安全的方法。
对于pkill,支持的信号与kill 相同。然而,在killall的情况下,支持的信号数量和信号名称是不同的。
杀死一个进程
要杀死一个进程,我们需要该目标进程的 PID。假设您有 PID,请运行以下命令来终止它。
在这里,kill 将向 PID 发送默认信号 SIGTERM。如果您想终止多个进程,请提及所有以空格分隔的 PID。
让我们指定您想要发送到目标的信号。
想要仅使用进程名称来终止进程吗?使用 pkill。
在某些情况下,特定应用程序可能运行太多进程。输入所有这些 PID 既耗时又烦人。在这种情况下,我们将使用killall 工具。它与kill 非常相似,但它适用于进程名称。
例如,当运行 Firefox 时,它会启动一些进程。要立即杀死所有它们,请运行此命令。
想要终止某个用户下运行的所有进程吗? Killall 可以完成这项工作,没问题。运行此程序时要小心,因为它可能会破坏系统并产生其他问题。如果您尝试终止在具有更高权限的不同用户下运行的进程,它将不起作用。
权限冲突
当您要终止应用程序时,Linux 用户层次结构的固有特征也适用。用户无法终止以较高权限运行的进程,只能终止具有同等/较低权限的进程。此外,用户无法操纵在不同用户下运行的进程。
例如,让我们考虑 yes 命令。如果以当前用户身份调用,则可以使用kill轻松终止它。
现在,如果 yes 在 root 下运行怎么办?以当前用户身份调用kill 是行不通的。
同样,如果进程在另一个用户下运行,您无法从不同的用户帐户终止它。
最后的想法
在本文中,仅展示了这些命令的基础知识和常见用法。这些杀毒工具的功能远不止这些。要深入了解任何工具的功能,我建议查看手册页。
享受!