2014-08-28 178 views
2

陣列我不能完全確定我是否應該已經張貼在這裏,這,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(第一列)推入數組中。

回答

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}形式。這裏,條件由三個條件和-ED一起(&&意味着邏輯和):

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

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

  • 第三要求第二列中,通過在$2表示awk,是大於零。 Awk可以做字符串和數字比較。儘管在這裏可能不需要,但使用如$2+0中的加法,強制使用數字比較。

如果所有三個條件都滿足,所述第一列(進程ID)印刷經由:

print $1 

注意awk消除了對兩個grep命令的需要。

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