Linux 进程管理 kill、killall、pkill命令
Linux常用信号(进程间通信)
系统中可以识别的信号较多,我们可以使用命令"kill -l"或"man 7 signal"来查询。命令如下:
[root@localhost ~]# 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
常见的进程信号最重要的就是 "1"、"9"、"15"这三个信号
| 信号代号 | 信号名称 | 说 明 | 
|---|---|---|
| 1 | SIGHUP | 该信号让进程立即关闭.然后重新读取配置文件之后重启 | 
| 2 | SIGINT | 程序中止信号,用于中止前台进程。相当于输出 Ctrl+C 快捷键 | 
| 8 | SIGFPE | 在发生致命的算术运算错误时发出。不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误 | 
| 9 | SIGKILL | 用来立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程 | 
| 14 | SIGALRM | 时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号 | 
| 15 | SIGTERM | 正常结束进程的信号,kill 命令的默认信号。 如果进程已经发生了问题,那么这个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL信号(信号 9) | 
| 18 | SIGCONT | 该信号可以让暂停的进程恢复执行。本信号不能被阻断 | 
| 19 | SIGSTOP | 该信号可以暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断 | 
kill命令:终止进程
kill是用来杀死进程的命令。可以根据不同的信号,kill 命令可以完成不同的操作,默认信号是15,正常停止。kill 命令格式如下:
[root@localhost ~]# kill [信号] PID
kill 命令是按照 PID 来确定进程的,所以 kill 命令只能识别 PID,而不能识别进程名。我们举几个例子来说明一下 kill 命令。
使用“-1”信号,让进程重启
[root@localhost ~]# kill - 进程号
使用“-19”信号,让进程暂停
[root@localhost ~]# kill - 进程号
killall命令:终止特定的一类进程
killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程。命令格式如下:
[root@localhost ~]# killall [选项] [信号] 进程名
选项:
- -i:交互式,询问是否要杀死某个进程;
- -l:忽略进程名的大小写;
杀死httpd进程
#启动RPM包默认安装的apache服务
[root@localhost ~]# service httpd start
#查看httpd进程
[root@localhost ~]# ps aux | grep "httpd" | grep -v "grep"
root 0.0 0.2 ? Ss : : /usr/local/apache2/bin/httpd -k start
daemon 0.0 0.1 ? S : : /usr/local/apache2/bin/httpd -k start
daemon 0.0 0.1 ? S : : /usr/local/apache2/bin/httpd -k start
daemon 0.0 0.1 ? S : : /usr/local/apache2/bin/httpd -k start
daemon 0.0 0.1 ? S : : /usr/local/apache2/bin/httpd -k start
daemon 0.0 0.1 ? S : : /usr/local/apache2/bin/httpd -k start
#杀死所有进程名是httpd的进程
[root@localhost ~]# killall httpd
#查询发现所有的httpd进程都消失了
[root@localhost ~]# ps aux | grep "httpd" | grep -v "grep"
交互式杀死sshd进程
#查询系统中有3个sshd进程。1733是sshd服务的进程,1735和1758是两个远程连接的进程
[root@localhost ~]# ps aux | grep "sshd" | grep -v "grep"
root 0.0 0.1 ? Ss : :/usr/sbin/sshd
root 0.1 0.5 ? Ss : : sshd: root@pts/
root 0.1 0.5 ? Ss : : sshd: root@pts/
#交互式杀死sshd进程
[root@localhost ~]# killall -i sshd
#这个进程是sshd的服务进程,如果杀死,那么所有的sshd连接都不能登陆
杀死sshd()?(y/N)n
#这是当前登录终端,不能杀死我自己吧
杀死 sshd()?(y/N)n
#杀死另一个sshd登陆终端
杀死 sshd()?(y/N)y
pkill命令:终止进程,按终端号踢出用户
pkill 命令和 killall 命令非常类似,也是按照进程名来杀死进程的。命令格式如下:
[root@localhost ~]# pkill [选项] [信号] 进程名
选项:
- -t 终端号:按照终端号踢出用户;
不过 pkill 命令可以按照终端号来踢出用户。不知道大家发现没有,刚刚通过 killall 命令杀死 sshd 进程的方式来踢出用户,非常容易误杀死进程,要么会把 sshd 服务杀死,要么会把自己的登录终端杀死。
所以,不管是使用 kill 命令按照 PID 杀死登录进程,还是使用 killall 命令按照进程名杀死登录进程,都是非常容易误杀死进程的。 具体命令如下:
#使用w命令査询本机已经登录的用户
[root@localhost ~]# w
:: up min, users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root ttyl - : : .01s .01s -bash
root pts/ 192.168.0.100 : .00s .09s .04s w
root pts/ 192.168.0.100 : : .02s .02s -bash
#当前主机已经登录了三个root用户,一个是本地终端ttyl登录,另外两个是从192.168.0.100登陆的远程登录
#强制杀死从pts/1虚拟终端登陆的进程
[root@localhost ~]# pkill - -t pts/
#虚拟终端pts/1的登录进程已经被杀死了
[root@localhost ~]# w
:: up min, users, load average: 0.00, 0.00,0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root ttyl - : : .01s .01s -bash
root pts/ 192.168.0.100 : .00s .06s .00s w
Linux 进程管理 kill、killall、pkill命令的更多相关文章
- Linux进程管理(二)
		目录 Linux进程管理(二) 参考 vmstat命令 top命令 Linux进程管理(二) 
- Linux进程管理(一)
		目录 Linux进程管理(一) 参考 pstree命令 pidof命令 pmap命令 pwdx命令 ps命令 nice调优 发送信号 Linux进程管理(一) 
- 12个Linux进程管理命令介绍(转)
		12个Linux进程管理命令介绍 [日期:2015-06-02] 来源:Linux中国 作者:Linux [字体:大 中 小] 执行中的程序在称作进程.当程序以可执行文件存放在存储中,并且运行的 ... 
- [转帖]十二 个经典 Linux 进程管理命令介绍
		https://www.cnblogs.com/swordxia/p/4550825.html 接了 http referer 头 没法显示图片 可以去原始blog 里面去查看. 随笔- 109 ... 
- killall 、kill 、pkill 命令详解 【转】
		之前常用地kill 命令就是 kill -9 XXid;kill -15 XXid;pkill 进程名: 今天发现killall也有适用场景,killall命令对杀死进程组(一个进程中有多线程的情况) ... 
- s9 Linux 进程管理命令
		9.1 ps:查看进程 9.2-3 pstree & pgrep 9.4-6 kill & killall & pkill 9.7 top:实时显示系统中各个进程的资源占用状况 ... 
- Linux进程管理、任务管理
		查看进程 Linux中的进程可以使用ps.pstree命令查看. 一般使用 ps aux (注意,没有短划线-:虽然加上不影响执行,只是会提示),还可以使用 ps -le,都是查看所有进程,区别在于显 ... 
- Linux 进程管理 笔记
		https://www.ibm.com/developerworks/cn/linux/l-linux-process-management/index.htmlLinux 进程管理剖析 进程可以是短 ... 
- linux进程管理(二)
		接上[linux进程管理(一)] 终止进程的工具 kill .killall.pkill 终止一个进程或终止一个正在运行的程序,一般是通过 kill .killall.pkill.xkill 等进行. ... 
随机推荐
- 描述JSP和Servlet的区别、共同点、各自应用的范围
			描述JSP和Servlet的区别.共同点.各自应用的范围 解答:JSP在本质上就是SERVLET,但是两者的创建方式不一样.Servlet完全是JAVA程序代码构成,擅长于流程控制和事务处理,通过Se ... 
- List、Map、Set三个接口存储元素时各有什么特点?
			List.Map.Set三个接口存储元素时各有什么特点? 解答: 1)List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置.用户能够使用索引(元素在List中的位置,类似于 ... 
- java 关键字static
			在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块. Java把内存分为栈内存和堆内存, 栈内存用来存放一些基本类型的变量.数组和对象的引用, 堆 ... 
- mac os下android 通过battery-historian进行电量分析
			简单介绍下如何用battery-historian进行电量分析,因为battery-hostorian是基于go语言的框架,所以需要安装go 1.安装go 2.配置go环境变量到.bash_profi ... 
- curl使用例子
			地址:http://phpbook.phpxy.com/34771 参考:http://php.net/manual/zh/function.curl-setopt.php 我们将curl的步骤分为以 ... 
- BlockingQueue(阻塞队列)分析
			如果读者还有一点印象,我们在实现线程池时,用了队列这种数据结构来存储接收到的任务,在多线程环境中阻塞队列是一种非常有用的队列,在介绍BlockingQueue之前,我们先解释一下Queue接口. Qu ... 
- 【转】JavaScript和Java的区别
			虽然JavaScript与Java有紧密的联系,但却是两个公司开发的不同的两个产品. Java是SUN公司推出的新一代面向对象的程序设计语言,特别适合于Internet 应用程序开发:而Ja ... 
- IOS7--javascriptcore中jscontext使用要注意的一点
			在公司一个项目中,用到了highchart做图表显示的组件,这就要用到了javascriptcore,代码就不上了,说说原理. 需求是这样的,通过http请求server csv格式的数据,然后解析, ... 
- Dubbo基础篇-zookeeper安装(单点)
			安装步骤: 一首先安装jdk环境 二 安装zookeeper 在centos虚拟机192.168.23.131中安装zookeeper: 1 修改操作系统/etc/hosts 文件中的配置: # ... 
- [Go语言]从Docker源码学习Go——function和method
			function和method关系 method是针对某一类型定义的function, function可以单独调用,method必须针对某一类型的实例进行调用 //function 调用方式 pac ... 
