我讀到該ps
命令可以採用兩種格式的標誌:
- Unix 格式,您應該在標誌前面加上破折號。
- BSD 格式中,標誌前方不應有破折號。
現在,相同的標誌是否可以用於兩種格式,例如以下命令是否意味著相同的事情:
ps -x
ps x
或者 Unix 格式是否有自己的一組標誌,而 BSD 格式有一組完全不同的標誌?
答案1
這線上說明頁回答你的問題:
不同類型的選項可以自由混合,但可能會出現衝突。由於與許多標準和
ps
實作ps
相容,因此存在一些功能相同的同義選項。請注意,
ps -aux
與 不同ps aux
。 POSIX 和 UNIX 標準要求ps -aux
列印名為「x」的使用者擁有的所有進程,以及列印該-a
選項將選擇的所有進程。如果名為「x」的使用者不存在,則此 ps 可能會將命令解釋為ps aux
並列印警告。此行為旨在幫助轉變舊的腳本和習慣。它很脆弱,容易發生變化,因此不應依賴它。
標誌不同,但可以組合。通常你會選一個,例如或查看所有過程的詳細信息,ps aux
而ps -ef
不是混合。
唯一的x
標誌是 BSD 標誌,因此ps x
和ps -x
產生相同的結果;但這對於兩種變體中定義的標誌都不起作用。
這一切都是特定於procps
和procps-ng
。ps x
和的等價物ps -x
是「第二次機會」解析階段的結果,如果第一遍沒有完全解析所有參數,則呼叫該階段;這沒有記錄在線上幫助頁中,但在HACKING
原始碼中的文件:
除非個性強制 BSD 解析,否則 parser.c 會嘗試將命令列解析為混合的 BSD+SysV+Gnu 混亂。失敗時,將嘗試 BSD 解析。如果BSD解析失敗後已嘗試 SysV 解析,錯誤訊息來自原始 SysV 解析。