您的当前位置:首页正文

Linux kill命令教程:如何优雅地终止进程(附实例详解和注意事项)

2024-11-11 来源:个人技术集锦

Linux kill命令介绍

kill 是一种在 Linux(Bourne-derived shells,如 Bash 和 Zsh)中用于终止执行进程的命令。它发送一个信号给指定的进程或进程组,使其按照信号的要求行动。该命令位于 /bin/kill,如果用户在键入 kill 命令时没有明确指定要发送的信号,则会发送一个默认的 TERM 信号来终止这个进程。

Linux kill命令适用的Linux版本

kill命令适用于各种Linux发行版,包括Debian, Ubuntu, Alpine, Arch Linux, Kali Linux, RedHat/CentOS, Fedora, Raspbian等。要在这些系统中安装或更新kill命令,只需要使用对应系统的包管理器并输入适当的命令。例如,在Debian和Ubuntu中,你可以使用apt-get命令,而在Fedora和RHEL/CentOS中,则可以使用dnf或yum命令。注意CentOS 7和CentOS 8的安装命令略有不同。

安装kill命令的方式如下:

[linux@bashcommandnotfound.cn ~]$ sudo apt-get install procps     #Debian/Ubuntu系统
[linux@bashcommandnotfound.cn ~]$ sudo dnf install procps-ng     #Fedora 22+系统
[linux@bashcommandnotfound.cn ~]$ sudo yum install procps        #Older Fedora/RHEL/CentOS

对于CentOS 7,会使用yum作为包管理器,而CentOS 8则使用dnf。

Linux kill命令的基本语法

基本语法如下:

kill [options] pid

Linux kill命令的常用选项或参数说明

以下表格中描述了 kill 命令的一些最常用的选项:

OptionDescription
-l列出所有可能的信号
signal终止指定的信号
pid进程号

Linux kill命令实例详解

实例1:终止一个进程

[linux@bashcommandnotfound.cn ~]$ kill 1234

实例2:列出所有的信号

[linux@bashcommandnotfound.cn ~]$ kill -l

实例3:发送特定的信号到进程

[linux@bashcommandnotfound.cn ~]$ kill -9 1234

实例4:发送自定义信号

TERM是kill发送给应用程序/进程的默认信号。然而,如果你愿意,你可以使用-s命令行选项发送kill支持的任何其他信号。例如,如果一个进程对TERM信号没有响应(这允许进程在退出前进行最后的清理),你可以选择KILL信号(这不让进程进行任何清理)。在这种情况下,你需要运行以下命令。

[linux@bashcommandnotfound.cn ~]$ kill -s KILL [pid]

实例5:使用kill命令发送STOP信号

我们可以使用kill命令发送STOP信号来暂停一个进程。例如,如果我们想暂停’gthumb’进程,我们可以首先使用ps命令获取应用程序的pid,然后将其传递给kill命令进行暂停。

[linux@bashcommandnotfound.cn ~]$ ps -ef | grep gthumb
[linux@bashcommandnotfound.cn ~]$ kill -s STOP [pid]

实例6:使用kill命令发送CONT信号

如果我们已经使用STOP信号暂停了一个进程,我们可以使用CONT信号来恢复该进程。例如,如果我们想恢复’gthumb’进程,我们可以首先使用ps命令获取应用程序的pid,然后将其传递给kill命令进行恢复。

[linux@bashcommandnotfound.cn ~]$ ps -ef | grep gthumb
[linux@bashcommandnotfound.cn ~]$ kill -s CONT [pid]

实例7:使用kill命令发送USR1信号

USR1USR2是两个用户定义的信号,它们没有预定义的行为,所以应用程序可以使用它们来执行任何特定的任务。例如,如果我们想向’gthumb’进程发送USR1信号,我们可以首先使用ps命令获取应用程序的pid,然后将其传递给kill命令进行发送。

[linux@bashcommandnotfound.cn ~]$ ps -ef | grep gthumb
[linux@bashcommandnotfound.cn ~]$ kill -s USR1 [pid]

Linux kill命令的注意事项

  • 当你使用kill命令时,需要注意,负的PID值被用来表示进程组ID。如果你传递一个进程组ID,那么该组中的所有进程都将接收到信号。
  • PID为-1是非常特殊的,因为它表示除了kill进程本身和init(所有进程在系统上的父进程)之外的所有进程。
  • bash: kill: command not found,您需要根据上文给出的命令进行安装。

Linux kill相关命令

  • ps命令:这是用于查看系统中当前运行的进程
  • top命令:这是一个实时显示当前系统状态动态监控系统的实用工具
  • pkill命令:这是一个可以根据进程名终止进程的命令
  • htop命令:这是一个互动的进程查看器,同时也是 ‘top’ 命令的一种增强版
Top