以批次模式應用頂部過濾器

以批次模式應用頂部過濾器

我可以套用我想要的濾鏡互動模式(按 o)。有沒有辦法以批次模式取得這些。

我正在使用 procps-ng 版本 3.3.10。謝謝。

答案1

根據手冊頁-p命令列選項可用來限制哪些進程top讀取。它似乎不允許完全像互動模式下那樣進行過濾,但是您可以透過檢查 的輸出來獲得基本上相同的結果ps

例如,僅採用具有三個以上執行緒的進程:

$ ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print $2; } }' | sort -u

在我的電腦上,這會列印所有相關進程的列表,每行一個。ps產生進程詳細資訊列表,該awk命令對其進行過濾,並sort僅刪除重複項。

為了您的使用,請檢查ps您需要哪些欄位。在我的電腦上,線程數(“NLWP”)是第六列($6),進程 ID(“PID”)是第二列($2)。awk根據需要在命令中調整這些以符合您需要的篩選器。請注意,$6出現兩次:第一次是為了確保它是一個數字而不是標題,第二次是為了確保它大於 3。

運行此命令後,必須將進程 ID 賦予top。 Bash 和可能的其他 shell 允許將程式的輸出作為參數傳遞給另一個程序,因此最終命令可能是

$ top $(ps -eLf | awk '$6 ~ /^[0-9]+$/ { if ($6 > 3) { print "-p"$2; } }' | sort -u) ... And other options

"-p"添加是為了使輸出能夠與top.根據需要調整此命令以適合您的過濾器和外殼,將其放入您的批次中,它應該可以工作。

注意:添加更多過濾器可能需要學習 awk。這並不太難。

相關內容