滤波器输出和推过滤后的数据与庆典

问题描述:

阵列我不能完全确定我是否应该已经张贴在这里,这,serverfault或Linux和UNIX,但...滤波器输出和推过滤后的数据与庆典

我想在这里做的是采取此命令的输出:

ps -eo pid -eo ecpu -eo command | sort -k 2 -r | grep -v PID | grep -i frmweb 

an example of it is here

...和应用过滤器,它不仅着眼于正在使用CPU进程。 (> 0)

...然后取出剩下的内容并将PID(第一列)推入数组中。

要使进程ID中称为nonzero一个bash数组:

nonzero=($(ps -eo pid -eo ecpu -eo command | sort -k 2 -r | awk '/frmweb/ && !/PID/ && $2+0>0{print $1}')) 

awk命令具有的condition {commands}形式。这里,条件由三个条件和-ED一起(&&意味着逻辑和):

/frmweb/ && !/PID/ && $2+0>0 
  • 第一条件表示,行必须包含frmweb

  • 第二要求它必须不包含PID

  • 第三要求第二列中,通过在$2表示awk,是大于零。 Awk可以做字符串和数字比较。尽管在这里可能不需要,但使用如$2+0中的加法,强制使用数字比较。

如果所有三个条件都满足,所述第一列(进程ID)印刷经由:

print $1 

注意awk消除了对两个grep命令的需要。

array_of_pids=($(your-pipeline | awk '$2 > 0.0 {print $1}'))