我不确定我是否应该在这里发布,serverfault或linux和unix但是......
我在这里要做的是从此命令获取输出:
ps -eo pid -eo ecpu -eo command | sort -k 2 -r | grep -v PID | grep -i frmweb
...并应用一个过滤器,它只查看使用cpu的进程。 (> 0)
...然后拿走剩下的东西并将PID(第一列)推入一个数组。
答案 0 :(得分:2)
array_of_pids=( $(your-pipeline | awk '$2 > 0.0 {print $1}') )
答案 1 :(得分:2)
将进程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}
。这里,条件由三个条件组成,并且(&&
表示逻辑 - 和):
/frmweb/ && !/PID/ && $2+0>0
第一个条件是该行必须包含frmweb
。
第二个要求它不得包含PID
第三列要求awk
中$2
表示的第二列大于零。 Awk
可以进行字符串和数字比较。虽然这里可能没有必要,但在$2+0
中使用加法会强制使用数字比较。
如果满足所有三个条件,则通过以下方式打印第一列(进程ID):
print $1
请注意,awk
无需使用两个grep
命令。