【转载】Linux kill, killall, kill -9
1) 查看进程的方法:
ps -ef 或者 ps aux
root 15087 0.0 0.0 0 0 ? S 23:31 0:00 [kworker/1:1]
root 15219 0.0 0.0 0 0 ? S 23:36 0:00 [kworker/1:0]
root 15460 0.0 0.0 0 0 ? S 23:41 0:00 [kworker/1:2]
homer 15572 23.0 5.8 791472 119788 ? Sl 23:45 0:03 /usr/lib/firefox/firefox
homer 15590 0.1 0.1 273796 3132 ? Sl 23:45 0:00 /usr/lib/at-spi2-core/at-spi-bus-launcher
homer 15620 0.0 0.0 22360 1268 pts/0 R+ 23:45 0:00 ps aux
2) kill -9
kill -s 9 15572
其中,-s 9 制定了传递给进程的信号是9,即强制、尽快终止进程。 15572则是上面ps查到的火狐(firefox)的PID。
简单吧,但有个问题,进程少时ps还无所谓,进程多了,就会觉得痛苦了,无论是ps -ef 还是ps -aux,每次都要在一大串进程信息里面查找到要杀的进程PID,看的眼都花了。
用法详解:
kill -9, 这个强大和危险的命令迫使进程在运行时突然终止,进程在结束后不能自我清理。危害是导致系统资源无法正常释放,一般不推荐使用,除非其他办法都无效。
当使用此命令时,一定要通过ps -ef确认没有剩下任何僵尸进程。只能通过终止父进程来消除僵尸进程。如果僵尸进程被init收养,问题就比较严重了。杀死init进程意味着关闭系统。
如果系统中有僵尸进程,并且其父进程是init,而且僵尸进程占用了大量的系统资源,那么就需要在某个时候重启机器以清除进程表了。
2.1) 改进 1 —— grep
把ps的查询结果通过管道传给grep,查找包含特定字符串的进程。管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。
例如: homer@ubuntu:~$ ps -aux | grep firefox
homer 15572 1.7 5.0 808644 103260 ? Sl 23:45 0:07 /usr/lib/firefox/firefox
homer 15735 0.0 0.0 13584 920 pts/0 S+ 23:52 0:00 grep --color=auto firefox
直接找到firefox进程PID, 输入: kill -s 9 15572
2.2) 改进 2 —— pgrep
pgrep的p表明了这个命令是专门用于进程查询的grep
例如: homer@ubuntu:~$ pgrep firefox
15572
2.3) 改进 3 —— pidof
pidof命令,表示 pid of xx,字面翻译过来就是 xx的PID
例如: homer@ubuntu:~$ pidof firefox
15572
2.4) 改进4 —— grep + awk
grep firefox 列出firefox进程信息,并awk取第二个field,即PID
例如: homer@ubuntu:~$ ps -ef | grep firefox | grep -v grep | awk '{print $2}'
15572
2.5) 改进 5 —— kill + xargs
杀死进程的方式有以下几种:
a) ps -ef | grep firefox | grep -v grep | awk '{print $2}' | xargs kill -s 9
b) pgrep firefox | xargs kill -s 9
c) pidof firefox | xargs kill -s 9
或
d) kill -s 9 `ps -ef | grep firefox | grep -v grep | awk '{print $2}'`
e) kill -s 9 `pgrep firefox`
f) kill -s 9 `pidof firefox`
2.6) 改进 6 —— pkill
pkill 类似于 pgrep, pkill 表示 pgrep+kill
例如: pkill firefox
3) killall
killall命令, 杀死同一进程组内的所有进程,其允许指定要终止的进程的名称,而非PID
killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。
homer@ubuntu:~$ killall firefo
firefo: no process found
homer@ubuntu:~$ killall firefox
homer@ubuntu:~$ killall -9 firefox
4) kill
杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志。
例如: # kill -pid
注释: 标准的kill命令,默认采用信号(signal)号是15,通常都能达到目的,终止有问题的进程,并把进程的资源释放给系统。然而,如果进程启动了子进程,只杀死父进程,子进程仍在运行,因此仍消耗资源。为了防止这些所谓的“僵尸进程”,应确保在杀死父进程之前,先杀死其所有的子进程。
5) kill -l
例如: kill -l PID
-l 选项, 告诉kill命令用好像启动进程的用户已注销的方式结束进程。当使用该选项时,kill命令也试图杀死所留下的子进程。但这个命令也不是总能成功--或许仍然需要先手工杀死子进程,然后再杀死父进程。
6) kill -HUP
有时候只想简单的停止和重启进程。
例如: # kill -HUP PID
该命令让Linux和缓的执行进程关闭,然后立即重启。在配置应用程序的时候,这个命令很方便,在对配置文件修改后需要重启进程时就可以执行此命令。
附录:各种信号及其用途
| Signal | Description | Signal number on Linux x86 |
|---|---|---|
| SIGABRT | Process aborted | 6 |
| SIGALRM | Signal raised by alarm | 14 |
| SIGBUS | Bus error: "access to undefined portion of memory object" | 7 |
| SIGCHLD | Child process terminated, stopped (or continued*) | 17 |
| SIGCONT | Continue if stopped | 18 |
| SIGFPE | Floating point exception: "erroneous arithmetic operation" | 8 |
| SIGHUP | Hangup | 1 |
| SIGILL | Illegal instruction | 4 |
| SIGINT | Interrupt | 2 |
| SIGKILL | Kill (terminate immediately) | 9 |
| SIGPIPE | Write to pipe with no one reading | 13 |
| SIGQUIT | Quit and dump core | 3 |
| SIGSEGV | Segmentation violation | 11 |
| SIGSTOP | Stop executing temporarily | 19 |
| SIGTERM | Termination (request to terminate) | 15 |
| SIGTSTP | Terminal stop signal | 20 |
| SIGTTIN | Background process attempting to read from tty ("in") | 21 |
| SIGTTOU | Background process attempting to write to tty ("out") | 22 |
| SIGUSR1 | User-defined 1 | 10 |
| SIGUSR2 | User-defined 2 | 12 |
| SIGPOLL | Pollable event | 29 |
| SIGPROF | Profiling timer expired | 27 |
| SIGSYS | Bad syscall | 31 |
| SIGTRAP | Trace/breakpoint trap | 5 |
| SIGURG | Urgent data available on socket | 23 |
| SIGVTALRM | Signal raised by timer counting virtual time: "virtual timer expired" | 26 |
| SIGXCPU | CPU time limit exceeded | 24 |
| SIGXFSZ | File size limit exceeded | 25 |
【转载】Linux kill, killall, kill -9的更多相关文章
- 【Linux常用命令】Linux kill, killall, kill -9,
参考链接 https://blog.csdn.net/zong596568821xp/article/details/77899454 kill + PID kill -9 + PID 加上-9 是 ...
- Linux kill, killall, kill -9
tyle="margin: 20px 0px 0px; font-size: 14px; line-height: 26px; font-family: Arial;"> 附 ...
- linux命令killall 、kill 、pkill 命令详解
转自:http://www.cnblogs.com/rsky/p/4886043.html killall 命令 Linux系统中的killall命令用于杀死指定名字的进程(kill processe ...
- Linux常用指令---kill | killall(终止进程)
kill Linux中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以使用Ctrl+C键,但是,对于一个后 ...
- Linux命令——killall 、kill 、pkill、xkill
参考:killall .kill .pkill 命令详解 Using kill, killall, and pkill 4 Ways to Kill a Process – kill, killall ...
- 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 ...
- kill,killall,top,free,vmstat,iostat,watch命令
kill命令 Linux 中的kill命令用来终止指定的进程(terminate a process)的运行,是Linux下进程管理的常用命令.通常,终止一个前台进程可以 使用Ctrl+C键,但是,对 ...
- linux 杀死进程kill 等用法
kill -9 $(ps -ef | grep process_name | grep -v grep | awk '{print $2}') 稍微解释一下: awk '{print $2} ...
- linux命令kill和kill -9的区别
linux命令kill和kill -9的区别 2018年04月13日 16:53:07 坠入苦海销尘垢 阅读数 2854 转载自https://www.cnblogs.com/liuhouhou/ ...
随机推荐
- Maven中如何将源码之外的文件打包及添加本地jar
<build> <resources> <resource> <directory>src/main/resources</directory&g ...
- 更新协同开发工具SVN的链接的服务器地址
公司内的协同开发工具使用的SVN,因为换了个服务器需要重置SVN地址,一下子有点措手不及. 研究了下SVN的操作菜单,发现有一个功能“重新定位”,应该就是我要找的了,试了一下果真没错,记录下 第一步: ...
- 【题解】HNOI2018寻宝游戏
太厉害啦……感觉看到了正解之后整个人都惊呆了一样.真的很强%%% 首先要注意到一个性质.位运算列与列之间是不会相互影响的,那么我们先观察使一列满足条件的操作序列需要满足什么条件.&0时,不论之 ...
- [Leetcode] set matrix zeroes 矩阵置零
Given a m x n matrix, if an element is 0, set its entire row and column to 0. Do it in place. click ...
- 洛谷 P1829 [国家集训队]Crash的数字表格 / JZPTAB 解题报告
[国家集训队]Crash的数字表格 / JZPTAB 题意 求\(\sum\limits_{i=1}^n\sum\limits_{j=1}^mlcm(i,j)\),\(n,m\le 10^7\) 鉴于 ...
- 【BZOJ 3172】[Tjoi2013]单词 AC自动机
关于AC自动机:一个在kmp与Trie的基础上建立的数据结构,关键在于Trie树结构与fail指针,他们各有各的应用.在AC自动机里最典型的就是多串匹配,原本效率为O(n*l+n*l+m*l),(n是 ...
- 第116讲 boost::algorithm::string之替换和删除
http://www.360doc.com/content/16/0523/18/29304643_561672752.shtml
- POJ3020:Antenna Placement(二分图匹配)
Antnna Placement Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 11093 Accepted: 5459 ...
- hadoop 架构
- Spring MVC框架下 将数据库内容前台页面显示完整版【获取数据库人员参与的事件列表】
1.书写jsp页面包括要显示的内容[people.jsp] <!-- 此处包括三个方面内容: 1.包含 文本输入框 查询按钮 查询结果显示位置 (paging) 2.包括对按钮(button) ...