先看例子, 假设系统中有以下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 - $(pidof 'java')
--缺点: 跟Java有关的进程全被杀掉
更精准的方法:
pgrep java | xargs ps -u --pid | grep 'com.tongxun.Wireless' | cut -c - |xargs sudo kill -
说明如下:
管道符“|”用来隔开两个命令,管道符左边命令的输出会作为管道符右边命令的输入。下面说说用管道符联接起来的几个命令:
"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 - $(pidof 'java')
pgrep java | xargs sudo kill -