如何使用 kill 和 pkill 终止 Linux 中无响应的进程

处理无响应的程序可能是一项棘手的工作,特别是如果您在较旧的硬件上运行。 在这种情况下,系统冻结成为一个常见问题。 幸运的是,有很多方法可以杀死 Linux 中无响应的进程。

kill 和 pkill 命令提供了简单而有效的解决方案来从终端终止无响应的僵尸进程。 以下部分描述了如何使用 kill 和 pkill 在 Linux 中杀死挂起的进程。

使用 kill 终止无响应的进程

Linux 中的 kill 命令可让您轻松退出无响应的进程。 它向进程发送终止信号。 默认情况下,kill 发送 SIGTERM 信号,由信号编号表示 15. 以下 example 使用 kill 停止 PID 为 27065 的进程。

kill 27065

用户可以通过指定信号名称或编号来发送其他信号。 为了 example,下面的 kill 命令使用 杀戮 系统信号,用信号号表示 9.

kill -9 27065
kill -SIGKILL 27065

SIGTERM 和 SIGKILL 之间的区别在于进程可以捕获和忽略 SIGTERM 信号。 但是,SIGKILL 不受进程处理的影响,会立即终止程序。

您可以使用以下 kill 命令查看所有可用信号的列表。

kill -l
kill -L

总的来说,SIGKILL 在处理无响应的系统进程时会更合适。 另一方面,如果您想优雅地终止挂起的程序,则 SIGTERM 是一种选择。

使用 pkill 杀死无响应的进程

pkill 命令允许我们根据程序的名称来终止程序,从而使终止 Linux 中的进程变得更加容易。 为了 example,下面的命令杀死 纳米 使用 pkill 的程序。

pkill nano

和 kill 一样,pkill 默认也发送 SIGTERM 信号。 如果您想立即停止无响应的进程,请使用 SIGKILL 信号。

pkill -9 nano

如何获取进程的进程 ID (PID)

在 Linux 中终止无响应的进程时,拥有 PID 信息可能会有很大帮助。 您可以通过多种方式获取进程的 PID 号。 以下命令使用 grep 命令和 ps 检索名为 nano 的进程的 PID。

ps aux | grep nano

您也可以使用 pgrep 命令,它直接吐出进程 ID。

pgrep nano

在 Linux 上管理无响应的进程

kill 和 pkill 命令可以轻松处理 Linux 中无响应的进程。 停止僵尸进程所需要的只是它的 PID 和对 shell 的访问。 但是,您可能需要额外的 sudo 杀死属于另一个用户的进程时的权限。 因此,如果您使用的是多用户系统,请让管理员在您采取任何操作之前将您添加到 sudoers 列表中。