微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux – 查找(并杀死)旧进程

基本上我需要能够扫描进程树并找到与某个名称匹配的进程,并开始运行超过一周.一旦我拥有它们,我需要杀死它们.系统仍然将所有进程视为处于运行状态,而不是使用任何系统时间.他们通常也会永远处于这种状态.

理想情况下,我想找到类似的东西,但是对于流程来说.

系统是Debian linux,这将由cron编写并运行,所以我没有真正的大问题,但可以理解.

解决方法

你可以用ps,awk和kill的组合做到这一点:
ps -eo pid,etime,comm

为您提供三列输出,包括进程PID,自进程启动以来经过的时间以及没有参数的命令名称.经过的时间看起来像下列之一:

mm:ss
hh:mm:ss
d-hh:mm:ss

由于您希望流程运行超过一周,因此您将寻找与第三个模式匹配的行.您可以使用awk通过运行时间和命令名来过滤掉进程,如下所示:

ps -eo pid,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }'

这将打印匹配’mycommand’的所有命令的pids,这些命令已运行超过7天.管道列表杀死,你完成了:

ps -eo pid,comm | awk '$2~/^7-/ && $3~/mycommand/ { print $1 }' | kill -9

原文地址:https://www.jb51.cc/linux/402477.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐