02月20, 2016

Linux下批量杀掉特定进程

在使用服务器时可能会遇到需要把服务器上符合某一条件的进程全部kill掉,但是又不能使用killall杀掉所有运行中的进程,就需要使用命令筛选出符合条件的进程并kill掉,本文主要提供一个满足此要求的命令

具体命令:

ps -ef | grep condition | grep -v grep | awk '{print $2}' | xargs kill -9

使用介绍:

  • | 管道符,用来分割两个命令,管道符左侧命令的输出会作为右侧命令的输入
  • ps命令用来列出系统中当前运行的进程,ps -ef命令会显示所有进程信息
  • grep命令用于过滤/筛选特定字符,condition为过滤条件,grep condition即表示过滤所有含有‘condition’名称的进程
  • grep -v显示不包含匹配文本的所有行,grep -v grep表示筛选出所有不包含grep名称的进程,在这里使用是对上一步的进程结果再做一次筛选,避免结果中出现当前命令,因为ps -ef列出了所有的命令,也包括当前命令
  • awk在文件或字符串中基于指定条件筛选信息,把文件逐行读入,以空格为默认分隔符将每行切片,然后再进行后序处理,此时利用awk '{print $2}'将上一步中过滤得到的进程进行打印,$2表示打印第二个域(PID,进程ID),$0表示所有域,$1表示第一个域(UID),$n表示第n个域
  • xargs命令是给命令传递参数的过滤器,用于把标准数据转换成命令行参数,在这里则是将前面得到的PID转换成命令行参数传递给后面的kill -9命令
  • kill -9强制关闭进程

以上就是Linux下批量杀掉特定进程的命令,有任何问题都可以在文章下方评论或直接邮件联系我。

本文链接:https://www.shaobin.wang/post/31.html

Comments