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. Leedcode算法专题训练(贪心)

    1. 分配饼干 455. 分发饼干 题目描述:每个孩子都有一个满足度 grid,每个饼干都有一个大小 size,只有饼干的大小大于等于一个孩子的满足度,该孩子才会获得满足.求解最多可以获得满足的孩子数 ...

  2. RocketMq(一)初识

    消息中间件基本上是互联网公司必用的一个中间件,为什么要使用MQ,当然是因为能给我们的系统带来很多好处. 消息队列简单来说是一种先进先出的数据结构,先简单认识下. 一.应用场景 消息中间件主要应用场景主 ...

  3. NOI2020游记

    我今年高一,这是我第一年作为正选参加NOI. 去年NOI没写游记,结果前两天想要复盘NOI2019的时候发现只能回想起一些模糊的记忆了.为了防止明年再遇到这种情况(其实我更希望没有明年),就有了这篇游 ...

  4. 如果你的application.properties中还存在明文密码----加密Spring Boot中的application.properties

    1 概述 什么?都2020年了还在Spring Boot的配置文件中写明文密码? 虽然是小项目,明文也没人看. 明文简单快捷方便啊!!! 你看直接用户名root密码123456多么简单!!! ... ...

  5. JavaScript 简写技巧

    1. 声明变量 //普通写法 let x; let y = 20; //简写 let x, y = 20; 2. 给多个变量赋值 //普通写法 let a, b, c; a = 5; b = 8; c ...

  6. 【Azure Redis 缓存 Azure Cache For Redis】Redis连接池

    问题描述 Redis根据定价层说明,不同级别支持的连接数最多可达4万(同时),但是当短时间又大量连接请求建立的时候,Redis服务的服务压力非常大,到达100%.严重影响了高响应的要求.最严重时,经常 ...

  7. k8s 运行单实例 mysql

    配置文件mysql.yaml --- apiVersion: v1 kind: Service metadata: name: mysql-01 spec: ports: - port: 3306 s ...

  8. aws EKS

    登陆aws账号 1)找到eks 相关的项目,并进入 2)填写集群的名称,然后下一步 3)集群设置页面,添加集群服务角色 (aws eks cluster role) 4)继续集群配置 5)集群创建完成 ...

  9. RandomForestClassifier参数

    [RandomForestClassifier] 参数 n_estimators : 随机森林中树的个数,即学习器的个数. max_features : 划分叶子节点,选择的最大特征数目 n_feat ...

  10. 1- java语言特性

    Java概述 Java是面向对象程序设计语言和Java平台的总称 Java体系 JavaSE(j2se)(标准版) JavaEE(J2ee)(企业版) JavaME(J2me) 面向对象 面向对象是J ...