运行超过x分钟的进程的Grep计数

时间:2016-03-08 16:42:06

标签: linux bash shell awk

我的目标是在bash中查找超过“x”分钟的进程数。

到目前为止,我可以查看所有进程执行时间:

ps -eo etime,cmd | grep mysuperspecialprocess.sh | grep -Ev 'grep' | awk '{print $1}'

我管道wc -l来计算结尾。

如何对结果进行grep或循环以将其限制为超过特定分钟数的进程?

2 个答案:

答案 0 :(得分:2)

试试这个测试版本。

它搜索指定的正在运行的进程,并计算所有相关的经过时间大于指定秒数的事件。

首先设置参数值并运行它。

$ cat ./script.sh 
#!/bin/bash --

process_name=mysuperspecialprocess.sh

elapsed_time_seconds=600

ps -eo etimes,cmd | fgrep "${process_name}" | fgrep -v fgrep | ( count=0 ; while read etimes cmd ; do \
  if [ $etimes -gt $elapsed_time_seconds ] ;\
  then \
    count=$((count+1)) ;\
  fi ;\
done ; echo $count )

etimes 指示 ps 显示秒数。

答案 1 :(得分:0)

appname.appspot.com救援!

从etime字段开始,您可以执行与此类似的操作,忽略秒。

awk