1.ps命令由於歷史原因,版本比較多,主要分為三種版本
1)Unix風格的版本,命令參數加單橫線。比如ps -ef
2)BSD風格的版本,命令參數前不加任何橫線。比如ps aux
3)GNU風格的版本,命令參數前加雙橫線。比如ps --deselect --forest //顯示所有進程,並且顯示出進程的父子關系,就是顯示出哪個進程創建了哪些進程。
2.由於ps命令較為復雜,一般的管理員會記住某些有用的命令組合來提取有用的進程信息的參數。
比如說你要查看系統上運行的所有進程的一些有用的信息,Unix風格的ps -ef命令可能是一個好的選擇,它會提供給你(進程創建者uid,進程pid,進程父親ppid,進程生命周期中的cpu利用率,進程啟動時間,進程在哪個個終端上啟動,從啟動到現在使用cpu的總時間,命令的名稱),注意:TTY代表進程在哪個終端上運行,若與終端無關,則顯示? 若為pts/0等,則表示由網絡連接主機進程。附上一張ps -ef的圖片。
當然,BSD風格的ps也不賴,它說它也有相應的命令,也能看進程的一些有用的信息,比如ps ax能查看所有進程的粗略的信息(進程pid,進程在哪個個終端上運行,進程的狀態,該進程從開始到現在實際使用cpu的總時間,啟動的命令),注意:許多管理員更喜歡使用BSD風格的原因和這個STAT字段有關系,他能更詳細的輸出進程的狀態。因為它使用的是雙字符來輸出狀態,而Unix風格的STAT列是單字符的狀態。第一個字符采用了和Unix單列一樣的值(O代表正在運行;S代表在休眠;R代表可運行,正等待運行;Z代表僵化,進程已結束但父進程已不存在),第二個字符是Unix風格所沒有的,是BSD獨有的,更加詳細地說明了進程的狀態。(<:代表該進程運行在高優先級;N:代表該進程運行在低優先級;L:代表該進程有頁面鎖定在內存中;s:代表該進程是控制進程;l:小L代表該進程是多線程的;+:代表進程運行在前台)附上一張ps ax的圖片。
ps ax只是顯示了部分的信息,如果不夠的話,還有它的大哥叫 ps aux可以顯示更多的信息
比ps ax多出來的是USER列,代表啟動這個進程的用戶名稱,%CPU代表當前這一刻,cpu占用的百分比,%MEM代表內存占用的百分比,VSZ代表的是進程在內存中占用的大小,單位是KB;RSS代表的是進程在未換出時占用的物理內存。
3.GNU長參數類型使用的比較少,但是我比較喜歡用它來查看一下進程之間的層級關系,ps --forest --deselect可以顯示所有進程的樹狀圖。
4.ps命令的參數很多,但是絕大多數場景下,上邊列出的參數組合基本夠用,如果還需要查看更多信息,可以查閱man手冊。