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, xkill

    1. Kill Command – Kill the process by specifying its PID All the below kill conventions will send th ...

  2. Linux终止进程的工具kill/killall/pkill/xkill/skill用法区别(转)

    一. 终止进程的工具kill .killall.pkill.xkill 终止一个进程或终止一个正在运行的程序,一般是通过kill .killall.pkill.xkill等进行.比如一个程序已经死掉, ...

  3. Linux命令——killall 、kill 、pkill、xkill

    参考:killall .kill .pkill 命令详解 Using kill, killall, and pkill 4 Ways to Kill a Process – kill, killall ...

  4. Sending Signals to Processes with kill, killall, and pkill

    The Linux kernel allows many signals to be sent to processes. Use man 7 signals for a complete overv ...

  5. Linux之kill,pkill,killall命令

    kill,pkill,killall这些命令都是用来杀死进程的 查找进程的方法: ps -ef|grep pidof 进程名 ps命令 http://www.cnblogs.com/along1226 ...

  6. killall 、kill 、pkill 命令详解

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

  7. killall 、kill 、pkill 命令详解 【转】

    之前常用地kill 命令就是 kill -9 XXid;kill -15 XXid;pkill 进程名: 今天发现killall也有适用场景,killall命令对杀死进程组(一个进程中有多线程的情况) ...

  8. killall 、kill 、pkill 命令区别

    转至:https://zhuanlan.zhihu.com/p/87904563 killall 命令 Linux系统中的killall命令用于杀死指定名字的进程(kill processes by ...

  9. [Linux] killall 、kill 、pkill 命令详解

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

随机推荐

  1. 看过这篇剖析,你还不懂 Go sync.Map 吗?

    hi, 大家好,我是 haohongfan. 本篇文章会从使用方式和原码角度剖析 sync.Map.不过不管是日常开发还是开源项目中,好像 sync.Map 并没有得到很好的利用,大家还是习惯使用 M ...

  2. shell脚本 4 函数与正则

    shell函数 shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数.给这段代码起个名字称为函数名,后续可以直接调用该段代码. 格式 func() {   #指定函数名 ...

  3. Salesforce学习之路(七)Visualforce结合Reports展示图表

    Salesforce作为一款CRM系统,个人觉得最重要的环境便是在于数据的展示和联动,而Salesforce也本身提供了相当强大的功能,Report在展示图表的方面十分强大,前段时间更是宣布以157亿 ...

  4. Molar mass UVA - 1586

    ​ An organic compound is any member of a large class of chemical compounds whose molecules contain c ...

  5. JDK8新特性(二) 流式编程Stream

    流式编程是1.8中的新特性,基于常用的四种函数式接口以及Lambda表达式对集合类数据进行类似流水线一般的操作 流式编程分为大概三个步骤:获取流 → 操作流 → 返回操作结果 流的获取方式 这里先了解 ...

  6. Java变量详解(变量定于及语法创建)

    变量的使用定义 变量用于操作系统中,实体之间的传递,把变量看作一个在内存空间中声明的存储位置,在调用变量的时候,系统会自动的调用内存中的存储位置. 在Java中,变量又称为字段,故字段在Java中又有 ...

  7. android安全学习、工具库、框架

    在介绍android工具之前,先理清android中出现的文件格式: java:android源码 class:java编译后生成: dex: 由dx工具编译class而成,由dalvik执行: sm ...

  8. 关于终端设备的设备唯一性的那些事之IMEI(转)

    最近和别人聊起来数据上报,一起讨论到imei和MAC地址,然后发现一个问题:知道这两个东西都不唯一,但是不知道为什么---- 回来上各种小网站巴拉巴拉找了一下,终于大概了解了前世今生,这里简单汇总一下 ...

  9. LeetCode---42. 接雨水 (hard)

    题目:42. 接雨水 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水. 示例: 输入:height = [0,1,0,2,1,0,1,3,2,1,2, ...

  10. ThinkPHP5中出现unserialize()报错

    简述 unserialize(): Error at offset 533 of 1857 bytes 发现问题 dump一下出错的位置的变量,可以发现是缓存出了问题,改了名字的文件的路径对不上 解决 ...