kill:终止进程

能够终止你希望停止的进程。

kill 命令的参数选项及说明

-l    列出全部的信号名称
-p    指定kill命令只打印相关进程的进程号,而不发送任何信号
-s    指定要发送的信号
[root@k8s-play ~]# kill -l   #<=参数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@k8s-play ~]# kill -l SIGKILL    #<=可以使用-l参数对信号名和数字信号互换。
9
[root@k8s-play ~]# kill -l 9
KILL

常用信号

信号        说明
HUP(1)    挂起,通常因终端掉线或用户退出而引发
INT(2)    中断,通常是按下Ctrl+c组合健来发出这个信号
QUIT(3)   退出,通常是按下Ctrl+\组合键来发出这个信号
KILL(9)   立即结束进程的运行
TERM(15)  终止,通常在系统关机时发送
TSTP(20)  暂停进程的运行,通常是按下Ctrl+z组合键来发出这个信号
更多细节请参考signal在线手册的第七部分(man 7signal)。

终止进程

kill指令默认使用的信号为15,用于结束进程。如果进程忽略此信号,则可以使用信号9强制终止进程。
一般是先通过ps等命令获取到要终止进程的进程号,然后直接使用“kill 进程号”就可以了。
kill 2203          #<==Kill命令默认使用的信号为15,这种格式也是最常用的。
kill -s 15 2203    #<==这种格式使用-s参数明确指定发送值为15的信号,效果和 kill 2203 一样。
kill -15 2203      #<==上面的-s 15可以简写为 -15
如果用上面的方法还是无法终止进程,那么我们就可以用KILL(9)信号强制终止进程。
kill -9 2203    #<==信号9会强行终止进程,这会带未一些副作用、如教据丢失,或者终端无法恢复到正常扶态等,因此应尽量避免使用,除非进程使用其他信号无法终止。

扩展:特殊信号0的应用案例

在kill的所有信号中,有一个十分特殊的信号值0,使用格式为kill -0 $pid。其中的 -0 表示不发送任何信号给$pid对应的进程,但是仍然会对$pid是否存在对应的进程进行检查,如果$pid对应的进程已存在,则返回0,若不存在则返回1。下面是系统参考脚本 /etc/init.d/mysqld。

killall:通过进程名终止进程

使用kill命令终止进程还需要先获取进程的pid进程号,这个过程有点繁琐,而使用killall命令就可以直接用“killall 进程名”这种形式终止进程。
killall [选项]  [进程名]
-c    对于很长的名字,要求能够准确匹配。默认情况下,如果一个进程名的长度超过了15个字符,则无法使用整个名字(溢出了)。在这种情况下,killall会终止所有匹配名字前15个字符的所有进程。而-e参数的作用是忽略模糊匹配项目。如果同时指定了-v选项,则killall会针对每个忽略的记录打印一条消息
-I    不区分大小写匹配
-g    终止属于该进程组的进程
-i    在终止进程之前询问是否确认
-l    列出所有已知的信号名
-q    如果没有进程终止则不提示
-r    使用正则表达式匹配要终止的进程名称
-s    用指定的信号代替默认信号
-u    终止指定用户的进程
-v    报告信号是否发送成功
-w    等待所有被终止的进程死去。killall每秒都会检查一次被终止的进程是否仍然存在,其仅在都死光后才返回。注意,如果信号被忽略,或者没有起作用,或者进程停留在僵尸状态,那么killall可能会永久等待
[root@cs6 ~]# killall crond
[root@cs6 ~]# killall crond
crond: 没有进程被杀死
[root@cs6 ~]# /etc/init.d/crond start
正在启动 crond:                                           [确定]
[root@cs6 ~]# killall -w crond
[root@cs6 ~]# killall -w crond
crond: 没有进程被杀死

终止指定用户的所有进程

killall -u www nginx  #<=这种方式可以终正所有归属于www用户的nginx进程

pkill:通过进程名终止进程

pkil命令可通过进程名终止指定的进程。使用killal终止进程需要连续执行几次,而pkill 可以杀死指定进程及其所有子进程。
pkill [选项] [进程名]
-t 终端    杀死指定终端的进程
-u 用户    杀死指定用户的进程

通过进程名终止进程

[root@cs6 ~]# service crond status
crond (pid  4641) 正在运行...
[root@cs6 ~]# pkill crond
[root@cs6 ~]# service crond status
crond 已死,但是 subsys 被锁

通过终端名终止进程

[root@cs6 ~]# w
07:20:39 up 1 day, 22:40,  1 user,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/4    10.0.0.1         00:59    0.00s  0.53s  0.00s w
[root@cs6 ~]# pkill -t  tty4

通过用户名终止进程

[root@cs6 ~]# w
07:22:39 up 1 day, 22:42,  2 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         07:21    1:34   0.07s  0.07s -bash
root     pts/4    10.0.0.1         00:59    0.00s  0.54s  0.00s w
[root@cs6 ~]# pkill -u root
Connection closing...Socket close.Connection closed by foreign host.Disconnected from remote host(cs6-minimal) at 15:24:31.#<=使用 -u 选项杀死指定用户的所有进程,最好还是同时再指定进程名去杀,以免误杀服务。

9.4-6 kill killall pkill相关推荐

  1. Kill Killall pkill

    文章目录 Kill Killall pkill 1 kill 1.1 常用功能 1.2 命令格式 1.3 使用实例 1.3.1 列出所有信号名称 1.3.2 得到指定信号的数值 1.3.3 杀死进程 ...

  2. kill killall pkill 的区别

    kill.pkill.killall 的作用都是终止一个进程或者正在运行的程序. kill.pkill.killall 的用法 kill 通常和grep 一起使用 常用使用方法 kill -9 + 进 ...

  3. Linux进程管理(ps,pgrep,kill,killall,pkill,nohup,bg,fg)

    文章目录 Linux进程管理 什么是进程?什么是线程?二者的区别? Linux进程管理命令 ps命令 使用方法案例 ps带减号和不带减号的区别 查看进程树的命令pstree pgrep命令 kill命 ...

  4. Ubuntu终止进程的方法(kill、pkill、killall)

    Ubuntu终止进程的方法(kill.pkill.killall) 博客分类:Ubuntu / Mac / Github / Aptana / Nginx / Shell / Linux 用户退出: ...

  5. 详解linux杀死进程方法:kill、pkill、killall之间的区别及用法!

    详解linux杀死进程方法:kill.pkill.killall之间的区别及用法! kill 命令 killall 命令 pkill 命令 kill.pkill.killall之间的区别 kill 命 ...

  6. linux 命令:grep、egrep、ngrep、kill、pkill、killall

    1.grep 帮助:grep --help 用法:grep [OPTION]...patterns[FILE]... 示例:grep -i 'hello world' menu.h main.c    ...

  7. killall 后面信号_killall 、kill 、pkill 命令区别

    killall 命令Linux系统中的killall命令用于杀死指定名字的进程(kill processes by name).我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死 ...

  8. pkill mysql_Linux学习28-linux一行命令杀掉指定名称进程(killall 、kill 、pkill)

    前言 常见面试题:如何用一句 linux 指令,查找到指定名称的进程并杀掉 常用的杀进程的三个指令:killall .kill .pkill 杀进程几种方式 killall命令用于杀死指定名字的进程( ...

  9. Linux中kill,pkill,killall和xkill命令汇总讲解

    终止一个进程或终止一个正在运行的程式,一般是通过 kill .killall.pkill.xkill 等进行.比如一个程式已死掉,但又不能退出,这时就应该考虑应用这些工具. 另外应用的场合就是在服务器 ...

最新文章

  1. 产品认知:如何选择产品经理的产品方向?
  2. 【转】持续交付和DevOps的前世今生
  3. docker 安装azkaban_azkaban安装
  4. tiptop 编译运行_putty终于让我的TIPTOP脱离虚拟机在64位上运行了。
  5. flex if(a is b){},flex if(a as b){} 意思
  6. oracle11.2.03,升级Oracle11.2.0.3后遭遇ORA-00600[kfioTranslateIO03][17090]
  7. Selenium2用最简xpath查找元素
  8. CodeBlocks 20.03 开发基于FLTK 1.4.X 的应用
  9. Js-字符串转Json并提取字段值
  10. java开发常见的问题及解决办法 - java开发中遇到的难点有哪些_java开发常见的问题及解决办法
  11. 通过keil5下载hex文件
  12. WinForm 去掉DataGridView最后一行的空白行,删除空白行
  13. python opencv4.0 提取alpha 通道
  14. 米兰理工计算机博士申请,意大利博士申请:米兰理工大学16个博士/博士后项目招生中~...
  15. 安装CHD走过的一些坑
  16. 【我的前端】网站开发:设计响应式网站的八大因素
  17. Android开发工程师常见面试题整理
  18. 地质灾害监测预警系统解决方案
  19. Less系列之函数(Functions)
  20. python-js逆向之AST语法树初学(一)

热门文章

  1. node mysql 事件循环_NodeJs 的 Event loop 事件循环机制详解
  2. 用java实现冒泡排序_Java实现冒泡排序
  3. python编写一个登陆验证程序_python项目实战:实现验证码登录网址实例
  4. canvas动画 电子白板_广东智慧电容式触摸屏维修,学校电子白板操作
  5. php 数组合并_PHP数组常用函数分类整理
  6. 重启服务器之home下文件全没,小白宝典——树莓派实用工具分享(大神绕路)
  7. 机器学习(二)梯度下降
  8. docker 导入导出镜像
  9. NLTK基础 | 一文轻松使用NLTK进行NLP任务(附视频)
  10. 为什么我不建议你买保险?