前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux进程批量杀死,一行命令全搞定,加强修复版

Linux进程批量杀死,一行命令全搞定,加强修复版

作者头像
程序员小助手
发布2020-04-08 11:39:38
1.8K0
发布2020-04-08 11:39:38
举报
文章被收录于专栏:程序员小助手程序员小助手

这一篇是对前面一篇的更新,也是bug修复。

回顾

上一个版本,我们推荐在Linux下,使用管道符,使用了4个工具,5个指令,将进程中不想使用的PIDs,进行批量kill操作。

使用工具如下:

ps aux | grep thread_name | grep -v grep | cut -c 9-15 | xargs kill -9

功能再分析

注意,上一条,我们使用cut这个裁切文本工具。

正如一位专业人士指出的那样,这样写是有bug的!

如果PID号超过7位,怎么办?

是的,使用 cut -c选项,将所有字符,单个批开,然后用固定位置截取PID,7位以下,可以做到拿到正确的PID号。

话说,Linux进程号,可能达到7位吗?

完全可能!

Bug修复

上面的命令行如何修改?

我们注意到,其实关键因素是ps的输出,以及cut的裁切。

cut:我们使用了-c选项,用于挨个字符串切割,然后定位,这样做短期可以,超过15 - 9 + 1 = 7位,极其危险。 因为,如果你用的root权限执行,kill掉的,可能是一个重要的应用进程。

线上很有可能瘫痪的。

Awk工具

是时候祭出重量级编程工具语言——awk了!

上面的命令行这样写:

ps aux | grep thread_name | grep -v grep | awk -F " " '{print $2}' | xargv kill -9

为什么awk可以?

因为awk使用的-F分隔符自动去除了无效的连续空格。

所以,只要ps aux的输出顺序不变,awk拿到的$2,就永远是PID。

写在最后

纸上得来终觉浅,绝知此事要躬行。

大家测试一下,有问题留言反馈。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 回顾
  • 功能再分析
  • Bug修复
  • Awk工具
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档