滤波器输出和推过滤后的数据与庆典
问题描述:
阵列我不能完全确定我是否应该已经张贴在这里,这,serverfault或Linux和UNIX,但...滤波器输出和推过滤后的数据与庆典
我想在这里做的是采取此命令的输出:
ps -eo pid -eo ecpu -eo command | sort -k 2 -r | grep -v PID | grep -i frmweb
...和应用过滤器,它不仅着眼于正在使用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}'))