Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令。
通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后台进程就须用kill命令来终止,我们就需要先使用ps/pidof/pstree/top等工具获取进程PID,然后使用kill命令来杀掉该进程。
kill命令是通过向进程发送指定的信号来结束相应进程的。在默认情况下,采用编号为15的TERM信号。TERM信号将终止所有不能捕获该信号的进程。
对于那些可以捕获该信号的进程就要用编号为9的kill信号,强行"杀掉"该进程。

1.命令格式:kill[参数][进程号]

2.命令功能:发送指定的信号到相应进程。不指定型号将发送SIGTERM(15)终止指定进程。
如果任无法终止该程序可用"-KILL" 参数,其发送的信号为SIGKILL(9),将强制结束进程,使用ps命令或者jobs命令可以查看进程号。
root用户将影响用户的进程,非root用户只能影响自己的进程。

3.命令参数:
-l  信号,若果不加信号的编号参数,则使用"-l"参数会列出全部的信号名称
-a  当处理当前进程时,不限制命令名和进程号的对应关系
-p  指定kill命令只打印相关进程的进程号,而不发送任何信号
-s  指定发送信号
-u  指定用户

注意:
1.kill命令可以带信号号码选项,也可以不带。如果没有信号号码,kill命令就会发出终止信号(15),这个信号可以被进程捕获,使得进程在退出之前可以清理并释放资源。也可以用kill向进程发送特定的信号。例如:

kill -2 123

它的效果等同于在前台运行PID为123的进程时按下Ctrl+C键。但是,普通用户只能使用不带signal参数的kill命令或最多使用-9信号。

2.kill可以带有进程ID号作为参数。当用kill向这些进程发送信号时,必须是这些进程的主人。如果试图撤销一个没有权限撤销的进程或撤销一个不存在的进程,就会得到一个错误信息。

3.可以向多个进程发信号或终止它们。

4.当kill成功地发送了信号后,shell会在屏幕上显示出进程的终止信息。有时这个信息不会马上显示,只有当按下Enter键使shell的命令提示符再次出现时,才会显示出来。

5.应注意,信号使进程强行终止,这常会带来一些副作用,如数据丢失或者终端无法恢复到正常状态。
发送信号时必须小心,只有在万不得已时,才用kill信号(9),因为进程不能首先捕获它。要撤销所有的后台作业,可以输入kill 0。
因为有些在后台运行的命令会启动多个进程,跟踪并找到所有要杀掉的进程的PID是件很麻烦的事。这时,使用kill 0来终止所有由当前shell启动的进程,是个有效的方法。

4.使用实例:
4.1 列出所有信号名称,命令:kill -l
[moiaopr@CNSZ443239 ~]$ 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

说明:只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略。

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

4.2 得到指定信号的数值
[moiaopr@CNSZ443239 ~]$ kill -l KILL
9
[moiaopr@CNSZ443239 ~]$ kill -l SIGKILL
9
[moiaopr@CNSZ443239 ~]$ kill -l TERM
15
[moiaopr@CNSZ443239 ~]$ kill -l SIGTERM
15

4.3 先用ps查找进程,然后用kill杀掉: kill 进程号 
[moiaopr@CNSZ443239 ~]$ ps -ef|grep vim
moiaopr  23344 22687  0 10:33 pts/15   00:00:00 grep vim

[moiaopr@CNSZ443239 ~]$ kill 23344

4.4 彻底杀死进程,命令: kill –9 进程号 
[moiaopr@CNSZ443239 ~]$ ps -ef|grep vim
moiaopr  23344 22687  0 10:33 pts/15   00:00:00 grep vim

[moiaopr@CNSZ443239 ~]$ kill –9 23344 
[moiaopr@CNSZ443239 ~]$ kill 23344 
-bash: kill: (23344) - 没有那个进程

4.5 init进程是不可杀的
[moiaopr@CNSZ443239 ~]$ ps -ef|grep init
root         1     0  0 Sep29 ?        00:00:01 /sbin/init
root      8587  8453  0 Nov03 pts/9    00:11:48 java -cp /opt/hadoopclient/Hive/Beeline/conf:/opt/hadoopclient/Hive/Beeline/bin/..//
lib/commons-cli-1.2.jar:/opt/hadoopclient/Hive/Beeline/bin/..//lib/commons-collections-3.2.1.jar:/opt/hadoopclient/Hive/Beeline/bin/..//
lib/commons-configuration-1.6.jar:/opt/hadoopclient/Hive/Beeline/bin/..//lib/commons-lang-2.6.jar:/opt/hadoopclient/Hive/Beeline/bin/..//
lib/commons-logging-1.1.3.jar:/opt/hadoopclient/Hive/Be

说明:

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

kill命令用法举例相关推荐

  1. linux nc命令用法举例

    nc命令用法举例 什么是nc nc是netcat的简写,有着网络界的瑞士军刀美誉.因为它短小精悍.功能实用,被设计为一个简单.可靠的网络工具 nc的作用 (1)实现任意TCP/UDP端口的侦听,nc可 ...

  2. which命令用法举例

    我们经常在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:  which    查看可执行文件的位置. whereis  查看文件的位置.  locate   配合数据库查 ...

  3. chmod命令用法举例

    chmod命令用于改变linux系统文件或目录的访问权限. 该命令有两种用法.一种是包含字母和操作符表达式的文字设定法:另一种是包含数字的数字设定法. 利用chown命令来更改某个文件或目录的所有者. ...

  4. ifconfig命令用法举例

    ifconfig(interfaces config): 用来获取网络接口配置信息并对此进行修改. 1.命令格式:ifconfig [网络设备] [参数] 2.命令功能:ifconfig 命令用来查看 ...

  5. chgrp命令用法举例

    在lunix系统里,文件或目录的权限的掌控以拥有者及所诉群组来管理. 可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以. Chgrp命令就是change grou ...

  6. whereis命令用法举例

    whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b).man说明文件(参数-m)和源代码文件(参数-s).如果省略参数,则返回所有信息. 和find相比,whereis查找的速度非 ...

  7. more命令用法举例

    more命令 1.命令格式:more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file ... ] 2.命令功能: 2.1 more命令功能类似ca ...

  8. wget命令用法举例

    Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器. wget支持HTTP,HTTPS和FTP ...

  9. tail命令用法举例

    tail命令从指定点开始将文件写到标准输出. tail -f filename可以方便的查阅正在改变的日志文件, 会把filename里最新的内容显示在屏幕上 1.命令格式: tail[必要参数][选 ...

最新文章

  1. python使用箱图法和业务规则进行异常数据处理并检查预测使用的数据特征是否有字段缺失的情况并补齐
  2. 用两张图告诉你,为什么你的App会卡顿?
  3. leetcode--130. 被围绕的区域
  4. 关于Github的那点事儿
  5. Linux使用vi/vim打开文档/文件报错E325:ATTENTION Found a swap file by the name
  6. char添加一个字符_LINUX字符设备驱动模型分析(起始篇)
  7. java中menu用法_Android Menu用法全面讲解
  8. Android图片缩放方法
  9. Linux安装redis(6.0.9)环境
  10. 大B公司自己做AI,都是九死一生——To B AI 平台的1.0 模式,已几乎宣告失败?...
  11. 创邻科技荣登机器之心Pro·AI 趋势先锋 Insight 榜单
  12. 各国家分析之加拿大安道尔
  13. 读后感:麦田守望者--走出软件作坊:三五个人十来条枪 如何成为开发正规军(四十三)
  14. Scratch编程(十)扩展模块:视频侦测模块
  15. Waymo无人车设立中国全资子公司,取名慧摩,与谷歌上海同楼办公
  16. 便签纸文字提示ui布局css3
  17. 社会化商业的基础架构
  18. vite打包分析插件rollup-plugin-visualizer
  19. [数据结构][Python][经典题目]明星问题
  20. 使用vue-markdown报错:* entities/maps/entities.json in ./node_modules/markdown-it/lib/common/entities.js

热门文章

  1. matlab interface,FREE金融数据Matlab接口(Finance Data Matlab Interface)
  2. 7 For All Mankind推出以新一代创意人士为主角的 2021秋冬系列主题创意
  3. 计算机在线考试系统,高效刷题考试平台!
  4. 周报(1121-1127)
  5. linux grub命令大全,GRUB常用命令
  6. java编写一个字体特效程序。
  7. 专精特新定义及认定标准!
  8. python画笑脸图案
  9. 投屏功能或调节亮度没反应的解决方法
  10. 【CVPR2018】PSMNet:一个基于金字塔的端到端立体匹配网络