2013-05-06 47 views
0

我有一个问题与这个问题有很大关系。 这里是我的代码:通过名称有一天杀死较旧的进程

ps -eo pid,etime,cmd|grep ${1}|grep -v grep|awk '{if ($2>="23:59:59") print $1}'|xargs kill -9 

我试图杀死与之ETIME是一天以上的特定名称的所有进程。它的工作方式很好,直到我被告知脚本无法终止表示日期的进程,例如:1-23:00:00。

将awk过程中的变量$ 2更改为1-00:00:00使用给定名称杀死所有进程。你能给我一个提示如何正确格式化etime吗?

回答

3

而不是更改awk脚本,我建议将ps选项etime更改为etimes

随着etimes你在几秒钟内获得了终生。你可以自由选择杀死或不杀的值,如果价值> or <有一定的价值。甚至,$2>=somevalue1 && $2<= somevalue2

+0

那么,我的Ubuntu盒子说它不知道anythin'关于etimes:错误:未知的用户定义的格式说明符“etimes” – alexeygaidamaka 2013-05-06 11:59:57

+0

[ChangeLog](http://procps.cvs.sourceforge.net/viewvc/procps/procps/NEWS?view = markup)表示它在2011年通过'procps-3.2.9'实现了(近来如此)。 – 2013-05-06 12:10:13

+0

@alexeygaidamaka在这种情况下,你可以用'etime'来生活,并且在你的awk中检查'$ 2'('$ 2〜/ - /')是否有'-'。如果匹配,则表示为“x-xx:xx:xx”格式。你可以杀死或不杀。 – Kent 2013-05-06 12:14:51