2021-05-12 14:32:11
Linux常用命令 ps 入門基礎教學
在Linux系統中,ps(Process Status的縮寫)命令常常用來用來列出系統中當前執行的進程。ps命令用來列出系統中當前執行的那些進程。要對進程進行監測和控制,首先必須要了解當前進程的情況,也就是需要檢視當前進程,而 ps 命令就是最基本同時也是非常強大的進程檢視命令。使用該命令可以確定有哪些進程正在執行和執行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等。總之大部分資訊都是可以通過執行該命令得到的。
Linux上進程有5種狀態:
- 執行(正在執行或在執行佇列中等待)
- 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
- 不可中斷(收到信號不喚醒和不可執行, 進程必須等待直到有中斷發生)
- 僵死(進程已終止, 但進程描述符存在, 直到父進程呼叫wait4()系統呼叫後釋放)
- 停止(進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號後停止執行執行)
ps工具標識進程的5種狀態碼:
- R 執行 runnable (on run queue)
- S 中斷 sleeping
- D 不可中斷 uninterruptible sleep (usually IO)
- T 停止 traced or stopped
- Z 僵死 a defunct (”zombie”) process
ps 使用
用法:ps [ 引數 ]
ps命令有很多引數,具體如下:
- -A 顯示所有進程(等價於-e)(utility)
- -a 顯示一個終端的所有進程,除了對談引線
- -N 忽略選擇。
- -d 顯示所有進程,但省略所有的對談引線(utility)
- -x 顯示沒有控制終端的進程,同時顯示各個命令的具體路徑。dx不可合用。(utility)
- -p pid 進程使用cpu的時間
- -u uid or username 選擇有效的使用者id或者是使用者名稱
- -g gid or groupname 顯示組的所有進程。
- U username 顯示該使用者下的所有進程,且顯示各個命令的詳細路徑。如:ps U zhang;(utility)
- -f 全部列出,通常和其他選項聯用。如:ps -fa or ps -fx and so on.
- -l 長格式(有F,wchan,C 等欄位)
- -j 作業格式
- -o 使用者自定義格式。
- v 以虛擬記憶體格式顯示
- s 以信號格式顯示
- -m 顯示所有的執行緒
- -H 顯示進程的層次(和其它的命令合用,如:ps -Ha)(utility)
- e 命令之後顯示環境(如:ps -d e; ps -a e)(utility)
- h 不顯示第一行
- --version 顯示版本資訊
- --help 顯示幫助資訊
下面給大家舉幾個在日常生活中使用較多的ps命令。
1、ps -aux
最常用的方法是ps -aux,然後再利用一個管道符號導向到grep去查詢特定的進程,然後再對特定的進程進行操作。
列說明:
- USER: 使用者名稱
- PID: 進程ID(Process ID)
- %CPU: 進程的cpu占用率
- %MEM: 進程的記憶體占用率
- VSZ: 進程所使用的虛存的大小(Virtual Size)
- RSS: 進程使用的駐留集大小或者是實際記憶體的大小,Kbytes位元組。
- TTY: 與進程關聯的終端(tty)
- STAT: 進程的狀態:進程狀態使用字元表示的(STAT的狀態碼)
- TIME: 進程使用的總cpu時間
- COMMAND: 正在執行的命令列命令
2、ps -axjf
樹形顯示進程,有時候我們希望以樹形結構顯示進程,可以使用 -axjf引數。
ps -axjf
或者可以使用另一個命令。
pstree
3、ps -ef
是用標準的格式顯示進程的、其格式如下
列說明:
- UID: 使用者ID(User ID)
- PID: 進程ID(Process ID)
- PPID: 父進程的進程ID(Parent Process id)
- STIME: 啟動時間
- TTY: 與進程關聯的終端(tty)
- TIME: 進程使用的總cpu時間
- CMD: 正在執行的命令列命令
4、ps -l
列說明:
- F: 代表這個程式的旗標 (flag), 4 代表使用者為 super user
- S: 睡眠 Sleeping 休眠中, 受阻, 在等待某個條件的形成或接受到信號。
- UID: 使用者ID(User ID)
- PID: 進程ID(Process ID)
- PPID: 父進程的進程ID(Parent Process id)
- C: CPU 使用的資源百分比
- PRI: 這個是 Priority (優先執行序) 的縮寫,詳細後面介紹
- NI: 這個是 Nice 值,在下一小節我們會持續介紹
- ADDR: 這個是 kernel function,指出該程式在記憶體的那個部分。如果是個 running的程式,一般就是 "-"
- SZ: 使用掉的記憶體大小
- WCHAN: 目前這個程式是否正在運作當中,若為 - 表示正在運作
- TTY: 登入者的終端機位置
- TIME: 使用掉的 CPU 時間。
- CMD 所下達的指令為何
5、顯示所有當前進程
(1)、ps -ax
使用 -a引數,-a 代表 all。同時加上x引數會顯示沒有控制終端的進程。
(2)、ps -ax | less
這個命令的結果或許會很長。為了便於檢視,可以結合less命令和管道來使用。
6、通過cpu和記憶體使用來過濾進程
如果你想把結果按照 CPU 或者記憶體用量來篩選,這樣你就找到哪個進程佔用了你的資源。要做到這一點,我們可以使用 aux 引數,來顯示全面的資訊:
(1)、ps -aux | less
顯示全面資訊
當結果很長時,我們可以使用管道和less命令來篩選。
預設的結果集是未排好序的,可以通過 –sort命令來排序。
(2)、根據 CPU 使用來升序排序
$ ps -aux --sort -pcpu | less
根據cpu使用排序
(3)、根據記憶體使用來升序排序
$ ps -aux --sort -pmem | less
根據記憶體使用來排序
(4)、我們也可以將它們合併到一個命令,並通過管道顯示前5個結果:
ps -aux --sort -pcpu,+pmem | head -n 5
相關文章