如何终止 Linux 上正在运行的进程

您所在的位置:网站首页 linux怎么停服务 如何终止 Linux 上正在运行的进程

如何终止 Linux 上正在运行的进程

2024-04-13 12:48| 来源: 网络整理| 查看: 265

如何终止 Linux 上正在运行的进程

Linux 系统上运行的所有内容(服务、脚本或其他任何内容)都被视为“进程”。如果您需要结束 Linux 上正在运行的进程,kill 命令肯定可以完成这项工作。

在本 Linux 管理员指南中,我们将介绍 kill Linux 命令以及如何使用其各种选项来结束或“杀死”Linux 上正在运行的进程。

在本教程中您将学习:

Kill 命令如何工作?

如何查看正在运行的进程

如何通过PID杀死进程

如何杀死拒绝关闭的进程

如何通过名称杀死进程

如何终止 Linux 上正在运行的进程

Kill 命令如何工作?

有了“kill”这样的名称,您可能会认为该实用程序用于立即结束进程。虽然这是事实,但 kill 仅在与某些选项一起使用时才以这种方式起作用。默认情况下,kill 将尝试尽可能优雅地停止进程。

用技术术语来说,kill 向指定进程发送一个 SIGTERM 信号,并指示该进程关闭。这是结束正在运行的进程的一种礼貌方式,并为应用程序或服务提供了首先完成工作的时间 - 例如完成对日志文件的写入,关闭由进程生成的打开的连接等。

唯一的问题是顽固的程序可能会忽略 SIGTERM 信号。这种情况尤其发生在冻结或“挂起”的进程中。然而,kill 可用于向进程发送许多不同的信号,甚至可以使用 SIGKILL 信号强制最顽固的信号关闭。我们将在下一节中讨论这些选项。

从这些信息中得到的重要一点是,如果可能的话,您应该向您希望结束的进程发送一个普通的 SIGTERM 信号。使用 SIGKILL 信号立即终止服务每次都很有效,并且会立即得到结果,但可能会导致未来出现问题,因为进程没有机会正确关闭。

如何查看正在运行的进程

Linux 中的每个进程都分配有一个唯一的“进程 ID”,在 Linux 终端中通常缩写为 PID。有时,为了结束进程,需要知道进程的 PID。要查看正在运行的进程列表及其相应的 PID 号,请使用 ps 命令:

# ps -e

这可能会产生大量输出,因为即使是全新安装的 Linux 也可能有相当多的正在运行的进程,因此通常最好将此命令通过管道传递给 grep 或 more。

要获得更易于管理的视图:

# ps -e | more -15

或者查找特定进程(本例中为 ssh):

# ps -e | grep ssh

获取正在运行的进程的PID

查看正在运行的进程及其 PID 列表的另一种便捷方法是使用 top 命令。有时这甚至更有用,因为它还显示进程正在使用多少系统资源。

用top命令查看PID

如何通过PID杀死进程

一旦确定了要结束的进程的 PID,您就可以将其指定为 kill 命令的参数。例如,要结束 PID 为 1234 的进程:

# kill 1234

此命令发送一个 SIGTERM 信号,并且应该能够在一两秒内关闭大多数进程。请记住,您可以再次使用 ps 命令来验证进程是否已成功关闭。

# ps -e | grep 1234 如何杀死拒绝关闭的进程

如果您遇到拒绝关闭的顽固进程,您可以在 kill 上使用 -9 选项发出 SIGKILL 信号。

# kill -9 1234

请记住谨慎使用此选项,因为它不是结束进程的理想方式(但有时您必须这样做)。

通常,SIGTERM 和 SIGKILL 可能是您需要使用的仅有的两个信号,但是您可以使用 kill 发送许多其他信号。命令。以下命令将输出完整列表:

# kill -L

Kill 可以发送的信号列表

至少了解其他选项是有好处的,因为某些程序或脚本可能会推荐使用它们。

正如您在输出中看到的,SIGKILL 列在#9 处,这就是 -9 开关发送 SIGKILL 信号的原因。指定不同的数字以将其各自的信号发送到进程。

如何通过名称杀死进程

有一种比每次都要查找进程 PID 更快的方法来结束进程。使用 pkill 命令和您要终止的进程的名称。例如,以下是终止 SSH 的方法:

# pkill ssh

pkill 命令能够发送不同的信号,就像常规的 kill 命令一样:

# pkill -9 ssh

也不必担心获取进程的确切名称。该命令杀死了我们系统上运行的名为 ssh-agent 的进程。

使用 pkill 而不是 kill 有一个缺点。假设您有两个正在运行的 SSH 进程:“ssh-server”和“ssh-agent”。使用 pkill 发出上述命令将结束这两个进程,即使您只想结束 ssh-agent 也是如此。

如果您运行一个脚本的多个实例,这也是一个问题,因为告诉 pkill 结束该脚本将结束该脚本的所有实例。话又说回来,有时这种行为可能更可取。如果您需要更精细的控制,请记住选择 kill 命令。

结论

在本文中,我们了解了如何使用 kill 命令终止 Linux 系统上运行的任何进程。我们学习了如何通过 PID 或名称来终止进程,以及这两种方法的优缺点。

了解 kill 命令及其使用方法的最佳实践后,您可以更好地控制系统上运行的进程。这对于有时“挂起”并拒绝关闭的程序特别方便。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3