【转载】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/ ...
随机推荐
- Java IO 之 RandomAccessFile 操作文件内容
RandomAccessFile类实现对文件内容的随机读写 文件内容的随机操作,重难点在于字符操作,具体查看API package org.zln.io.file; import java.io.IO ...
- 安装与配置JDK
第一步:下载jdk-7-linux-i586.tar.gzwget -c http://download.oracle.com/otn-pub/java/jdk/7/jdk-7-linux-i586. ...
- 【题解】CQOI2017老C的键盘
建议大家还是不要阅读此文了,因为我觉得这题我的解法实在是又不高效又不优美……只是想要记录一下,毕竟是除了中国象棋之外自己做出的组合dp第一题~ 首先如果做题做得多,比较熟练的话,应该能一眼看出这题所给 ...
- [Leetcode] palindrome partition ii 回文分区
Given a string s, partition s such that every substring of the partition is a palindrome. Return the ...
- display:inline-block带来的问题及解决办法
在日常工作中,会经常遇到两个或多个元素并排排列的效果,以前会使用float等实现,float虽然方便好用,但是需要清除浮动,有时会带来意想不到的bug 而且在移动端是不推荐使用float的,所以使用d ...
- 【BZOJ 4556】[Tjoi2016&Heoi2016]字符串 SAM+二分+主席树
这道题市面上就两种法:一种是SA+二分+主席树,一种是SAM+二分+主席树(有不少人打线段树合并???)(除此之外还有一种利用炒鸡水的数据的暴力SA,贼快.....)(当时学SA的时候没做这道题,现在 ...
- typescript的入门
命令行使用tsc 1.安装typescript npm install -g typescript 2.新建一个index.ts 输入export hello class{} 3.编译 tsc ind ...
- HDU 1394 Minimum Inversion Number(树状数组/归并排序实现
Minimum Inversion Number Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java ...
- bzoj 1110 [POI2007]砝码Odw 贪心+进制转化
[POI2007]砝码Odw Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 661 Solved: 366[Submit][Status][Disc ...
- 使用MAT分析内存泄露
使用MAT分析内存泄露 对于大型服务端应用程序来说,有些内存泄露问题很难在测试阶段发现,此时就需要分析JVM Heap Dump文件来找出问题.随着单机内存越来越大,应用heap也开得越来越大,动辄十 ...