今天做的事就是用一行shell指令杀死一个不知道pid的进程,比如ssh。

查看ssh进程

ps -aux | grep ssh

全自动杀进程_ps、grep、xargs、kill_杀死进程

 

 发现存在两个名字含有“ssh”的进程。  第一行就是ssh进程,第二行呢?其实是grep。

那么,过滤grep,使用指令:-v代表过滤

grep -v grep

那么,完整的查询指令应该是

ps -aux | grep ssh | grep -v grep

全自动杀进程_ps、grep、xargs、kill_杀死进程_02

 

 没有失望吧,现在只需要获取PID了。为什么是$2呢? awk指令了解一下。

awk ‘{print $2}’

完整的指令提取PID

ps -aux | grep ssh | grep -v grep | awk '{print $2}'

全自动杀进程_ps、grep、xargs、kill_杀死进程_03

 

 没错吧, 提取了PID。 不用说都知道,杀死进程的指令是

# 强制杀死进程
kill -9  PID

怎么把前面的输入结果作为kill的参数呢? xargs(将控制台输出的缓存数据作为指令的输入参数)

ps -aux | grep ssh | grep -v grep | awk '{print $2}' | xargs  kill -9

可以看出来,进程被杀死了

全自动杀进程_ps、grep、xargs、kill_IT_04