如何在Linux中使用Kill命令?如何在Linux中使用Kill命令?如何在Linux中使用Kill命令?如何在Linux中使用Kill命令?
  • 业务
  • 目标
  • 支持
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

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

如何在Linux中使用Kill命令?

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

发现行为不当的进程?以下是如何通过使用各种命令终止它来对其进行教训。

这对你的 Linux 系统来说是美好的一天,突然一个进程开始减慢整个计算机的速度。它并不那么重要,你想停止它的执行。

如果命令/进程在前台运行,您可以使用 Ctrl+C 终端快捷方式。但是,如果该进程不可见(在后台运行),您可以使用专用命令“杀死它”。

术语“终止进程”是指在执行过程中停止进程。如果您知道进程 ID (PID),则可以使用如下的 Kill 命令:

kill <signal> <PID>

在上面的语法中,signal 指的是要发送的终止信号,PID 指的是进程的 ID。

还有一个killall 命令,我将在本文中讨论kill 和killall 命令。

在开始终止进程之前,您应该了解一些事情。比如有哪些终止信号可用,如何找到PID等。

我们首先从信号开始。

Linux 中的终止信号

当一个进程被操作系统或用户终止时,即该进程没有自行完成,它会被发送一个终端信号。

以下是 Linux 中可用的终止信号:

Signal Numerical Value Description
SIGHUP 1 Signal Hangup: Sent to a process when the terminal controlling it is closed.
SIGINT 2 Signal Interrupt: The signal sent to a process when a user terminates a process. (eg Ctrl + X)
SIGKILL 9 Signal Kill: The signal that immediately quits a process, without allowing it to save its current state.
SIGTERM 15 Signal Terminate: Sent to the signal to request termination of process. This signal can be ignored by a process. But this is the preferred way of terminating a process as it can release the resources when the process receives SIGTERM.
SIGSTOP 19 (for x86, ARM and most others)
17 (for Alpha)
23 (for MIPS)
24 (for PARISC)
Signal Stop: Signal for stopping a process, but to be resumed at a later time.

您很可能会使用信号 9 和 15。阅读有关 SIGKILL 和 SIGTERM 之间差异的更多信息。

获取进程的PID

您还需要了解要终止的进程的详细信息。使用kill 命令时,您必须提供进程的ID (PID)。您可以从进程名称获取PID:

pidof exact_process_name

在 Linux 命令行中终止进程

让我们先看看kill命令,因为你会比killall更频繁地使用它。

使用kill命令

kill 命令要求您知道要终止的进程的 ID,以及终止信号(可选)。

要简单地终止命令,请使用以下语法:

kill [signal] <PID>

向 PID 发送终止信号是可选的,如果未提供信号,kill 默认发送 SIGTERM (15),以优雅终止所述进程。

我启动了 sleep 命令的后台进程(它给了我一个 PID)。让我们尝试使用 kill 命令杀死它。

终止这个特定的 sleep 实例将如下所示:

$  sleep 120 &
[1] 125686

$ kill 125686
[1]  + terminated  sleep 120

如果我想使用终止信号,我可以使用数值或信号本身:

$ sleep 120 &
[1] 125746

$ kill -SIGKILL 125746
[1]  + killed     sleep 120

####----##-----####

$ sleep 120 &
[1] 125759

$ kill -9 125759
[1]  + killed     sleep 120
?️
如果kill命令没有指定信号,则默认使用SIGTERM (15)。

使用killall命令

如果你不知道某个进程的PID是多少,或者该进程有多个子进程,而你想一次性杀死子进程和父进程,可以使用killall命令。

killall [signal] <process-name>

与kill命令类似,指定终止信号是可选的。当未指定终止信号时,killall 将发送 SIGTERM (15) 以正常关闭该进程。

为了演示 killall 的使用,我想终止两个正在运行的 sleep 命令。

$ sleep 120 &
[1] 18609

$ sleep 2000 &
[2] 18612

$ killall sleep
[1]-  Terminated              sleep 120
[2]+  Terminated              sleep 2000

此外,您可以使用 -e 标志来查找进程名称的精确匹配。

使用 pkill 命令

kill 的替代命令是 pkill 命令。它是 pgrep 和 kill 命令的“组合”。

killall 会杀死所有具有匹配名称的进程。另一方面,pkill 使用模式匹配来匹配进程并杀死它们。

下面是语法:

pkill [options] pattern

pkill 命令中提供了一些有用的选项,如下所示:

  • -u :特定所有者拥有的进程

  • -x :与模式完全匹配的进程

  • -signal :指定终止信号(默认为SIGTERM)

假设我的计算机上有一个用户 guest,当前不应运行任何进程,如果有,我想终止它们。我怎样才能做到这一点?

$ ps aux | grep sleep
guest     126061  0.0  0.0   6664   428 pts/3    S    10:14   0:00 sleep 50

$ sudo pkill -u guest

请注意,我使用 sudo 是因为我正在处理不属于我的用户的进程。

通过本文,您学习了在 Linux 中终止进程的 3 种不同命令。我感觉你比其他人更会执行kill命令。我对吗?

©2015-2025 Norria support@norria.com