
ps
和列出的進程有什麼差別ps -A
?
答案1
如果沒有-A
, ps 將只列印屬於目前會話的進程。把它想像成「絕對的一切」。在相關說明中-a
執行相同的操作,但將其限制為會話所有者(使用者名稱)。
答案2
GNUps
指揮部患有嚴重的多重人格障礙。因此,它的手冊頁令人困惑也就不足為奇了。也許查看 BSD 手冊可能會有所幫助。畢竟這個問題是標記的UNIX。
ps
當人們牢記兩件事時,BSD 的操作相當簡單:
- 使用兩個基本過濾器選擇要顯示的進程。這些過濾器是在預設情況下,命令列選項將它們打開離開。樸素的樸素
ps
就這樣通過兩者過濾掉了。 - BSD 語法可以追溯到很久以前。儘管現代 BSD 使用
getopt
以減號為前綴的選項約定,但此處相關的選項和行為與 30 年前大致相同。
該行為是這樣的:
-a
(歷史上a
)的選擇關掉所有“選擇器”過濾。- 其他各種命令列選項指定選擇器:
-U
按 UID 選擇、-t
按控制終端名稱選擇、-p
按進程 ID 選擇等等。所有這些都被繞過了-a
。 - 如果沒有明確提供選擇器,則預設選擇器是僅顯示與呼叫 的使用者俱有相同有效 UID 的進程
ps
。此預設選擇器是此選項關閉的歷史過濾器。
- 其他各種命令列選項指定選擇器:
-x
(歷史上x
)的選擇關掉ps
僅顯示具有控制終端的進程的限制。
從歷史上看,BSDps
沒有A
選擇。但是現代 BSD 實現了一個-A
選項,也可以用作A
,以(在一定程度上)與(後來的)單一 UNIX 規範相容。 -A
與同時使用-a
and是一樣的-x
:它關閉這兩個限制,留下一個保留所有進程,不進行過濾。
OpenBSD 和 NetBSD 記錄了該-A
選項,在 NetBSD 的情況下明確為-a -x
. FreeBSD 沒有,但原始程式碼中的註釋指出它是作為故意未記錄的 SUSv5 相容性選項而存在的。