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上编写运行C语言程序,经常会遇到程序崩溃、卡死等异...
git使用小结很多人可能和我一样,起初对git是一无所知的。我...
1. 操作系统环境、安装包准备 宿主机:Max OSX 10.10.5 虚拟...
因为业务系统需求,需要对web服务作nginx代理,在不断的尝试...
Linux模块机制浅析 Linux允许用户通过插入模块,实现干预内核...
一、Hadoop HA的Web页面访问 Hadoop开启HA后,会同时存在两个...