我使用过的Linux命令之kill - 终止进程/发送信号

我使用过的Linux命令之kill - 终止进程/发送信号

本文链接:http://codingstandards.iteye.com/blog/847299   (转载请注明出处)

用途说明

kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令。通常,我们在需要终止某个或某些进程时,先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令的另外一个用途就是向指定的进程或进程组发送信号(The  command kill sends the specified signal to the specified process or process group),或者确定进程号为PID的进程是否还在。比如,有许多程序都把SIGHUP信号作为重新读取配置文件的触发条件。

在Bash中,kill命令是个Shell内建命令,为什么呢?原因有两个:第一个原因,Bash可以进行任务管理(&,Ctrl+Z,bg,fg,kill %jobid等指令),如果kill只是一个外部命令,那么在需要终止某个任务时就会很难办,因为任务是与终端关联的,反过来,如果kill命令是shell内建命令,就可以很方便的采用kill %jobid的形式去杀掉指定任务(似乎这个原因还不是很充分);第二个原因,是更加重要的,如果要杀掉某个进程还得来启动一个名为kill的子进程,那么在达到允许创建的进程数量上限时,连kill进程本身都无法创建了,还怎么来杀掉其他进程呢!(Kill is a shell builtin for two reasons: it allows job IDs to be used instead of process IDs, and, if you have reached the limit on processes that you can create, you don't have to start a process to kill another one.)

 

常用参数

格式:kill <pid>

格式:kill -TERM <pid>

发送SIGTERM信号到指定进程,如果进程没有捕获该信号,则进程终止(If no signal is specified, the TERM signal is sent.  The TERM signal will kill processes which do not catch this signal.)

 

格式:kill -l

列出所有信号名称(Print a list of signal names.  These are found in /usr/include/linux/signal.h)。只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。下面是常用的信号:

HUP     1    终端断线
INT       2    中断(同 Ctrl + C)
QUIT    3    退出(同 Ctrl + \)
TERM    15    终止
KILL      9    强制终止
CONT   18    继续(与STOP相反, fg/bg命令)
STOP    19    暂停(同 Ctrl + Z)

 

格式:kill -l <signame>

显示指定信号的数值。

 

格式:kill -9 <pid>

格式:kill -KILL <pid>

强制杀掉指定进程,无条件终止指定进程。

 

格式:kill %<jobid>

格式:kill -9 %<jobid>

杀掉指定的任务(使用jobs命令可以列出)

 

使用示例

示例一 kill命令是什么类型的命令

[root@new55 ~]# type -a kill
kill is a shell builtin
kill is /bin/kill
kill is /usr/bin/kill

[root@new55 ~]# help kill
kill: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
    Send the processes named by PID (or JOBSPEC) the signal SIGSPEC.  If
    SIGSPEC is not present, then SIGTERM is assumed.  An argument of `-l'
    lists the signal names; if arguments follow `-l' they are assumed to
    be signal numbers for which names should be listed.  Kill is a shell
    builtin for two reasons: it allows job IDs to be used instead of
    process IDs, and, if you have reached the limit on processes that
    you can create, you don't have to start a process to kill another one.

[root@new55 ~]#

 

示例二 列出所有信号名称

[root@new55 ~]# kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL
 5) SIGTRAP      6) SIGABRT      7) SIGBUS       8) SIGFPE
 9) SIGKILL     10) SIGUSR1     11) SIGSEGV     12) SIGUSR2
13) SIGPIPE     14) SIGALRM     15) SIGTERM     16) SIGSTKFLT
17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU
25) SIGXFSZ     26) SIGVTALRM   27) SIGPROF     28) SIGWINCH
29) SIGIO       30) SIGPWR      31) SIGSYS      34) SIGRTMIN
35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3  38) SIGRTMIN+4
39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12
47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14
51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10
55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7  58) SIGRTMAX-6
59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
[root@new55 ~]#

/usr/include/linux/signal.h 写道
#define SIGHUP 1
#define SIGINT 2
#define SIGQUIT 3
#define SIGILL 4
#define SIGTRAP 5
#define SIGABRT 6
#define SIGIOT 6
#define SIGBUS 7
#define SIGFPE 8
#define SIGKILL 9
#define SIGUSR1 10
#define SIGSEGV 11
#define SIGUSR2 12
#define SIGPIPE 13
#define SIGALRM 14
#define SIGTERM 15
#define SIGSTKFLT 16
#define SIGCHLD 17
#define SIGCONT 18
#define SIGSTOP 19
#define SIGTSTP 20
#define SIGTTIN 21
#define SIGTTOU 22
#define SIGURG 23
#define SIGXCPU 24
#define SIGXFSZ 25
#define SIGVTALRM 26
#define SIGPROF 27
#define SIGWINCH 28
#define SIGIO 29
#define SIGPOLL SIGIO
/*
#define SIGLOST 29
*/
#define SIGPWR 30
#define SIGSYS 31
#define SIGUNUSED 31

/* These should not be considered constants from userland. */
#define SIGRTMIN 32
#define SIGRTMAX _NSIG

 

示例三 得到指定信号的数值

[root@new55 ~]# kill -l KILL
9
[root@new55 ~]# kill -l SIGKILL
9
[root@new55 ~]# kill -l TERM
15
[root@new55 ~]# kill -l SIGTERM
15
[root@new55 ~]#

 

示例四 init进程是不可杀的!

init是Linux系统操作中不可缺少的程序之一。所谓的init进程,它是一个由内核启动的用户级进程。内核自行启动(已经被载入内存,开始运行,并已初始化所有的设备驱动程序和数据结构等)之后,就通过启动一个用户级程序init的方式,完成引导进程。所以,init始终是第一个进程(其进程编号始终为1)。 其它所有进程都是init进程的子孙。

[root@new55 ~]# kill -HUP 1
[root@new55 ~]# kill -9 1
[root@new55 ~]# kill -KILL 1

系统依然在运行。
[root@new55 ~]#

 

示例五 先用ps查找进程,然后用kill杀掉

[root@new55 ~]# ps -ef|grep vim
root      3368  2884  0 16:21 pts/1    00:00:00 vim install.log
root      3370  2822  0 16:21 pts/0    00:00:00 grep vim
[root@new55 ~]# kill 3368
[root@new55 ~]# kill 3368
-bash: kill: (3368) - 没有那个进程
[root@new55 ~]#

 

示例六 杀掉指定任务

[root@new55 ~]# tail -f install.log
瀹夎 scim-bridge-gtk-0.4.5-9.el5.i386
瀹夎 scim-pinyin-0.5.91-16.el5.i386
瀹夎 scim-chewing-0.3.1-11.el5.i386
瀹夎 scim-chinese-standard-0.0.2-1.el5.i386
瀹夎 scim-tables-0.5.6-7.i386
瀹夎 scim-qtimm-0.9.4-5.i386
瀹夎 scim-tables-chinese-0.5.6-7.i386
瀹夎 fonts-chinese-3.02-12.el5.noarch
瀹夎 isdn4k-utils-3.2-56.el5.i386
瀹夎 stardict-2.4.5-5.i386
Ctrl+Z
[1]+  Stopped                 tail -f install.log
[root@new55 ~]# kill %1
[root@new55 ~]# kill %1
-bash: kill: (3379) - 没有那个进程
[1]+  已终止                  tail -f install.log
[root@new55 ~]#

 

问题思考

相关资料

【1】看看Linux    终止进程kill使用     
【2】我的空间我作主   linux kill信号列表    
【3】LinuxSense    linux kill命令的使用    
【4】太平洋电脑网   Linux的kill命令与信号控制    
【5】forfuture1978    linux Kill多个进程

 

返回 我使用过的Linux命令系列总目录

 

Realtek RTD1319D芯片解析:H.266与AV1双解码的机顶盒SoC 视频编解码技术是数字媒体传输的核心,H.266/VVC作为新一代标准,相比H.265提升50%压缩效率,显著降低带宽需求。其实现原理依赖于专用硬件解码器和并行处理架构,在超高清视频传输领域具有重要价值。Realtek RTD1319D作为首款商用H.266处理器,采用异构计算设计,集成四核ARM CPU和独立视频处理单元,同时支持AV1解码,兼顾市场兼容性。该SoC特别适合4K机顶盒、数字标牌等应用场景,其HDMI 2.1a接口和DVB解调器为超高清内容传输提供完整解决方案。开发时需注意散热设计和内存配置优 阅读详情

相关推荐

Python介绍与安装

Python介绍与安装

acegi13579的专栏 3219

Windows查看端口占用,并杀死相关进程

windows 查看端口占用,并杀死相关进程 C:\Users\Administrator>netstat -ano | findstr "8080" TCP 0.0.0.0:8080 0.0.0.0:0 LISTENING 2528 TCP 172.16.1.33:8080 172.16.1.34:65143 ESTABLISHED 2528 TCP 172.16.1.33:808...

x_ring的博客 3193

几率大的Redis面试题(含答案)

本文的面试题如下: Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存淘汰机制【~】 Redis 为什么是单线程的,优点 如何解决redis的并发竞争key问题 Red...

睶 38万+

sqlplus不是内部或外部命令_Win7命令提示符输入taskkill提示不是内部或外部命令...

使用win7系统的用户,想在命令提示符下使用taskkill命令删掉进程的时候,却提示taskkill不是内部或外部命令,也不是可运行的程序,遇到这样的问题,这位用户不知道怎么解决。所以给大家带来了解决方法教程,希望这篇文章能帮助到大家。方法/步骤:1、点击左下角的开始菜单找到命令提示符,或按 Win + R 组合键,打开运行,并输入:cmd,确定或回车,打开也可以;2、执行taskkill命令,...

weixin_39953673的博客 500

工程伦理-知识点汇总

工程伦理-知识点汇总

m0_46091747的博客 1万+

DSP在线升级方案:TMS320C6678使用网络或者串口输出升级数据进行固件升级

下面这段先引用创龙的说明 IBL 运行后, 将从 NOR FLASH 或 NAND FLASH 的 0x00080000 地址引导 ELF/BBLOB 格式 用户程序。 当引导 ELF 格式用户程序时, IBL 会解析用户程序头部信息,并根据头部信息 拷贝不同的代码段至指定 CPU 内存地址,然后将 PC 指针跳转至_c_int00, 再运行用户程 序。当引导 BBLOB 格式用户程序时,由于无头部信息, IBL 会将用户程序拷贝至 0x9E000000 (该内存地址为 IBL 代码指定),并将 PC..

ToneChip的专栏,一个传统的嵌入式码农,裸机编程 1941

Win7命令提示符输入taskkill提示不是内部或外部命令

Win7命令提示符输入taskkill提示不是内部或外部命令 有使用win7系统的用户,想在命令提示符下使用taskkill命令删掉进程的时候,却提示taskkill不是内部或外部命令,也不是可运行的程序,遇到这样的问题,这位用户不知道怎么解决。所以给大家带来了解决方法教程,希望这篇文章能帮助到大家。 方法/步骤: 1、点击左下角的开始菜单找到命令提示符,或按 Win + R 组合键,打开运行,并输入:cmd,确定或回车,打开也可以; 2、执行taskkill命令,提示不是内部命令; 3、执行 C:\w

深联技控 5316

优刻得首个「国产千卡智算集群」落地,支持智源千亿大模型训练

在人工智能引领的时代浪潮中,算力已成为技术进步与创新的核心驱动力。面对当下AI算力需求的飙升、高端AI芯片供应受限的挑战,加之OpenAI带来的技术封锁,唯有坚定不移的发展自主可控的国产技术方案,持续壮大国产智算集群规模,才能一路突破围追堵截,进一步促进国产大模型产业生态繁荣。集群还提供了完善高效的软件栈工具,集成多种主流的深度学习编程框架,通过测试验证,确保了对行业领先人工智能模型的高效支持,做到开箱即用,用户可快速投入模型的开发和部署,加速了其在人工智能领域的布局和发展。方面取得了显著成效。

Ucloud_TShare的博客 1472

问题(不是内部或外部命令)

 问题: 命令行里输入ipconfig,显示ipconfig不是内部或外部命令,也不是可运行的程序或批处理文件 原因: 可能是系统的Path被更改了 解答: 输入ping等命令时输入完整路径,比如C:/windows/system32/ping.exe   另一种方法:       我的电脑右键属性     高级       环境变量    进入系统变量   找到path一项    

crazyfisher的专栏 1057

FPGA之道(22)VHDL基本程序框架

在介绍详细的VHDL语法之前,让我们先来了解一下VHDL代码的基本程序框架,这样可以让我们先对VHDL程序设计有一个整体的概念把握,进而在后续的VHDL语法学习中做到有的放矢。

Reborn Lee 8307

Spring AI 项目实战(三):Spring Boot + AI + DeepSeek 打造智能客服系统(附完整源码)

摘要 本文介绍了基于Spring Boot 3.2和Spring AI 1.0.0-M4构建智能客服系统的技术方案。系统采用分层架构设计,集成DeepSeek API提供自然语言处理能力,使用MyBatis和H2数据库实现数据持久化,并通过Thymeleaf+Bootstrap构建前端界面。文章详细阐述了项目的技术栈选择、Maven依赖配置、应用架构设计,以及各模块的功能划分,为开发者提供了完整的智能客服系统实现方案,涵盖从后端服务到前端交互的全流程开发指导。

博客 3842

linux kill %1 是什么意思

[root@new55 ~]# tail -f install.log 。。。。。。。。。。。 。。。。。。。。。。。 Ctrl+Z [1]+  Stopped                 tail -f install.log [root@new55 ~]# kill %1 [root@new55 ~]# kill %1 -bash: kill: (3379) - 没有那个

曾经是个DBA 4707

电子技术课程设计:声音音量峰值检测显示系统设计

本文介绍了声音音量峰值检测显示系统的设计方案。系统采用分立元件设计,不使用单片机和集成运放,包含电源模块、声音采集放大电路、峰值检测保持模块、比较器、A/D转换及显示控制等部分。麦克风信号经两级晶体管放大后,通过二极管-电容电路检测峰值并保持,再经A/D转换显示为数字值(0000-9999)。系统采用9V电池供电,包含启动/清除控制功能,能指示声音过低或过高状态。详细阐述了各模块电路设计、参数计算和仿真验证,并提供了完整的原理图和PCB布线方案。该系统实现了声音峰值电压的准确检测与数字显示功能。

huanghm88的专栏 256

【Linux】如何用一条命令终止某个后台进程?

的,进程收到9号信号后一定会被终止。后台进程就需要我们知道这个进程的名字,然后查询这个进程的PID,再用kill发送信号将其终止。在之前我都是用下面这两个命令来处理的。

慕雪华年的博客 1283

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

Linux命令kill和signal

kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令。通常,我们在需要终止某个或某些进程时,先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令的另外一个用途就是向指定的进程或进程组发送信号(The command kill sends the specified sig...

weixin_30655569的博客 154

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

linux kill 命令

kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令。通常,我们在需要终止某个或某些进程时,先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。kill命令的另外一个用途就是向指定的进程或进程组发送信号(The  command kill sends the specified sign

沉淀 1027

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Linux中 kill 命令的常用信号

kill命令   kill命令用于终止指定的进程(terminate a process),是Unix/Linux下进程管理的常用命令。   通常,我们在需要终止某个或某些进程时,先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。  kill命令的另外一个用途就是向指定的进程或进程组发送信号(The  command kill sends the ...

spark_csdn的博客 5162

linux之kill命令详解

本文源自:http://www.xuejiehome.com/blread-1596.html kill号令用于终止指定的过程(terminate a process),是Unix/Linux下过程经管的常用号令。凡是,我们在须要终止某个或某些过程时,先应用ps/pidof/pstree/top等对象获取过程PID,然后应用kill号令来杀掉该过程。kill号令的别的一个用处就是向指定的过...

数据库生态圈(RDB & NoSQL & Bigdata)——专注于关系库应用与研究(Oracle & Mysql & Postgresql & SQL Server ) 724

Linux中kill -2、kill -9等区别 && kill signal汇总

kill号令用于终止指定的过程(terminate a process),是Unix/Linux下过程经管的常用号令。凡是,我们在须要终止某个或某些过程时,先应用ps/pidof/pstree/top等对象获取过程PID,然后应用kill号令来杀掉该过程。kill号令的别的一个用处就是向指定的过程或过程组发送旌旗灯号(The command kill sends the specified s...

llljjlj的博客 8854

【Linux命令】-- ps、kill

本文介绍了Linux系统中ps和kill两个常用命令的使用方法。ps命令用于查看进程状态,可通过不同选项显示详细进程信息,常用组合如ps aux显示所有进程,ps -ef展示完整信息。kill命令用于终止进程,支持发送不同信号:默认TERM信号(15)请求正常终止,KILL信号(9)强制终止,HUP信号(1)重载配置。文章还提供了查找进程PID的方法和kill命令的使用注意事项,强调应优先使用SIGTERM信号,仅在必要时使用SIGKILL强制终止进程。这两个命令是Linux系统管理的重要工具。

weixin_49708630的博客 1052

Linux 进程信号控制:skill 命令完整详解(暂停 / 继续 / 终止进程实战)

摘要: skill命令用于向指定进程发送信号(如暂停、继续或终止),通过进程ID、用户名、命令名或终端号等标准筛选目标。常用信号包括STOP(19,暂停)、CONT(18,恢复)、TERM(15,终止)和KILL(9,强制终止)。支持交互模式(-i)、模拟运行(-n)及组合筛选(如-u用户+-t终端)。需注意权限限制(普通用户仅能操作自有进程),避免误杀关键进程,推荐优先使用TERM而非KILL以防数据丢失。现代系统也可用kill/pkill实现类似功能。

qq_36742166的博客 304
上一篇: 我使用过的Linux命令之pstree - 以树状图显示进程间的关系
下一篇: 我使用过的Linux命令之base64 - 用base64编解码
codingstandards
博客等级 码龄16年 12粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值