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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的Linux相关文章