Linux.根据进程名关键字杀进程

先看例子, 假设系统中有以下2个进程
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root     14319  0.2  2.3 308104 22160 pts/1    Sl   16:09   0:02 java -classpath .:classes:/opt/pi4j/lib/* com.tongxun.recognizeFaces
root     14628  0.1  1.8 316148 17900 pts/2    Sl   16:10   0:01 java -classpath .:classes:/opt/pi4j/lib/* com.tongxun.Wireless


#kill -9 $(pidof 进程名关键字)

举例: 
sudo kill -9 $(pidof 'java')

--缺点: 跟Java有关的进程全被杀掉


更精准的方法:
pgrep java | xargs ps -u --pid | grep 'com.tongxun.Wireless' | cut -c 10-15 |xargs sudo kill -9

 

说明如下:

管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令:

"ps aux" 查看所有进程的命令。这时检索出的进程将作为下一条命令grep "common"的输入。

"grep "common" 选出所有含有关键字"common"的进程。

"cut -c 10-15" 截取输入行的第10个字符到第15个字符,而这正好是进程号PID。

"xargs kill –9" 中的xargs命令是用来把前面命令的输出结果(PID)作为"kill –9"命令的参数,并执行该命令。"kill –9" 会强行杀掉指定进程。

 

小结:

    如果进程名字唯一, 或者需要杀掉相同名字的进程, 可以用以下两个简化方法:

假设进程名字是"java"

sudo kill -9 $(pidof 'java')
pgrep java | xargs sudo kill -9

 

posted @ 2017-07-18 17:30  幻河  阅读(526)  评论(0编辑  收藏  举报