1、ps是什麼?
有時候我們需要對作業系統的當前進程進行監測和控制,這時候我們需要查看當前進程,以此了解當前進行的情況,這個時候我們就需要使用到ps命令,ps命令就是一種最基本的進程查看命令。使用改命令可以查看當前有哪些進程正在運行和運行狀態、進程是否結束,有沒有殭屍進程,進行資源佔用情況等等,通過該命令可以看到進程的大部分信息。
ps是顯示瞬間進程的狀態,並不動態連續;如果想對進程進行實時監控應該用top命令。
基本參數:
-A :所有的進程均顯示出來,與 -e 具有同樣的效用;-a :顯示現行終端機下的所有進程,包括其他用戶的進程;-u :以用戶為主的進程狀態 ;x :通常與 a 這個參數一起使用,可列出較完整信息。輸出格式規劃:
l :較長、較詳細的將該PID 的的信息列出;j :工作的格式 (jobs format)-f :做一個更為完整的輸出。下面我們就對該命令進行實操,看一下不同參數都有哪些效果。
2、不加參數執行ps命令會輸出什麼?
這是ps命令最基本的使用方式,下圖是在控制臺執行ps後的輸出結果。
結果默認會顯示4列信息,下面分別解釋一下這4列的含義:
PID: 運行著的命令(CMD)的進程編號TTY: 命令所運行的位置(終端)TIME: 運行著的該命令所佔用的CPU處理時間CMD: 該進程所運行的命令這些信息在顯示時未排序。
3、如何顯示所有當前進程?
-a參數,-a 代表 all。
-x 參數會顯示沒有控制終端的進程。
故我們向下面這樣使用:
$ ps -ax
執行後結果形如下圖:
# 這個命令執行結果可能很長,不方便查看,這時可以結合less命令和管道來使用。
使用方式如下:
$ ps -ax | less
4. 如何根據進程的用戶進行信息過濾呢?
在某些情況下我們需要查看特定用戶下的進程情況,我們可以使用 -u參數。
比如我們要查看用戶'pungki'的進程,可以通過下面的命令:
$ ps -u pungki
5、如何通過cpu和內存使用來過濾進程?
有時候我們需要查看哪些進程佔用了你的資源,就需要將結果按照CPU或者內存用量來進行篩選。要做到這一點我們可以結合aux參數來顯示全面的信息。
使用方式如下:
$ ps -aux | less
默認的結果集是未排好序的。可以通過 --sort命令來排序。
5.1 根據CPU使用率來升序排序
$ ps -aux --sort -pcpu | less
5.2 根據內存使用率來升序排序
$ ps -aux --sort -pmem | less
5.3 我們也可以將它們合併到一個命令,並通過管道顯示前10個結果:
$ ps -aux --sort -pcpu,+pmem | head -n 10
6、如何通過進程名和PID進行過濾呢?
如果我們要根據進程的名字來查看進行,可以使用 -C參數,後面跟你要找的進程的名字。比如想顯示一個名為getty的進程的信息,就可以使用下面的命令。使用方式如下:
$ ps -C getty
如果想要看到更多的細節,我們可以使用-f參數來查看格式化的信息列表:
$ ps -f -C getty
7、如何根據線程來過濾進程呢?
有時候我們需要查看指定進程的線程,這時候可以使用 -L參數,後面加上特定的PID。使用方式如下:
$ ps -L 1213
8、如何樹形的顯示進程?
有時候希望以某種特定的格式顯示進程信,可以使用 -axjf參數。使用方式如下:
$ ps -axjf
或者可以使用另一個命令。
$ pstree
9. 如何顯示安全信息?
有時候我們需要知道當前都有誰登錄你的伺服器,可以使用ps命令加上相關參數:
$ ps -eo pid,user,args
參數 -e顯示所有進程信息,-o 參數控制輸出。Pid,User 和 Args參數顯示PID,運行應用的用戶和該應用。
能夠與 -e參數 一起使用的關鍵字是args, cmd, comm, command, fname, ucmd, ucomm, lstart, bsdstart 和 start。
10. 如何格式化輸出root用戶(真實的或有效的UID)創建的進程?
系統管理員想要查看由root用戶運行的進程和這個進程的其他相關信息時,可以通過下面的命令:
$ ps -U root -u root u
-U參數按真實用戶ID(RUID)篩選進程,它會從用戶列表中選擇真實用戶名或 ID。真實用戶即實際創建該進程的用戶。
-u參數用來篩選有效用戶ID(EUID)。
最後的 u參數用來決定以針對用戶的格式輸出,由User, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME 和 COMMAND這幾列組成。
這裡有上面的命令的輸出結果:
11. 如何使用PS實時監控進程狀態?
ps 命令會顯示你系統當前的進程狀態,但是這個結果是靜態的。
當有一種情況,我們需要像上面第四點中提到的通過CPU和內存的使用率來篩選進程,並且我們希望結果能夠每秒刷新一次。
要滿足這個需求我們可以將ps命令和watch命令結合起來。使用方式如下:
$ watch -n 1 『ps -aux --sort -pmem, -pcpu』
如果輸出的內容太長太多,我們需要去限制它,比如要前20條,這時候我們再結合head命令來達到此效果。
$ watch -n 1 『ps -aux --sort -pmem, -pcpu | head 20』
這裡的動態查看並不像top或者htop命令一樣。但是使用ps的好處是你能夠定義顯示的欄位,你能夠選擇你想查看的欄位。
舉個例子,如果你只需要看名為'pungki'用戶的信息,你可以使用下面的命令:
$ watch -n 1 『ps -aux -U pungki u --sort -pmem, -pcpu | head 20』
12、最後
你也許每天都會使用ps命令來監控你的Linux系統。但是事實上,你可以通過ps命令的參數來生成各種你需要的報表。
ps命令的另一個優勢是ps是各種 Linux系統都默認安裝的,因此你只要用就行了。不要忘了通過 man ps來查看更多的參數。