
我必須使用 ps -Af 命令來計算我遠端使用的電腦上的 emacs 進程數。我該從哪裡開始呢?
答案1
ps -Af
不是最好的方法。
該f
選項是多餘的,如果非 emacs 進程使用 emacs 或包含它的字串作為其參數之一,則可能會觸發誤報,更不用說名為 emacs 的用戶(不太可能)的情況。
我建議使用這個更簡單的指令:
pgrep emacs | wc -l
答案2
你可以做ps -C emacs --no-heading | wc -l
ps -C command
按命令名稱輸出程序
編輯:ps --help
非常有趣
答案3
正如 Hennes 所說,你可以使用「ps -AF | grep emacs | wc -l
」來做到這一點。但你也會在那裡擁有自己的命令。若要刪除此命令,您可以使用“ grep -v
”(或--inverted-match
)來過濾掉您不想計數的命令。所以它看起來像這樣:ps -AF | grep emacs | grep -v grep | wc -l
答案4
從首要原則開始。
首先確定要求您使用的命令的具體用途,以及指定的選項 ( -Af
) 如何運作。為此,請閱讀man ps
:
-A 選擇所有進程。
-f 進行完整格式清單。此選項可以與許多其他 UNIX 樣式選項結合使用以新增其他列。
因此,您的起點是為您的用戶運行的所有進程的輸出,以完整格式列出。在嘗試進行任何處理之前運行命令以查看完整輸出:
ps -Af
為了對emacs
進程進行計數,您需要透過過濾工具透過管道傳輸輸出來處理輸出和/或對相應的匹配進行計數。grep
是一個不錯的選擇,但為了效率和簡單性,我會使用awk
:
ps -Af | awk '/emacs/ && !/awk/ { a++ } END { print a }'
這會搜尋模式/emacs/
,排除搜尋本身的模式 ,!/awk/
增加匹配項{ a++ }
,然後列印總計{ print a }
。
這只需要一個管道,並優雅地處理不返回計數中的搜尋過程的問題。