首頁 > 軟體

Linux常用命令 ps 入門基礎教學

2020-06-16 16:27:51

在Linux系統中,ps(Process Status的縮寫)命令常常用來用來列出系統中當前執行的進程。ps命令用來列出系統中當前執行的那些進程。要對進程進行監測和控制,首先必須要了解當前進程的情況,也就是需要檢視當前進程,而 ps 命令就是最基本同時也是非常強大的進程檢視命令。使用該命令可以確定有哪些進程正在執行和執行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等等。總之大部分資訊都是可以通過執行該命令得到的。

Linux上進程有5種狀態:

  1. 執行(正在執行或在執行佇列中等待)
  2. 中斷(休眠中, 受阻, 在等待某個條件的形成或接受到信號)
  3. 不可中斷(收到信號不喚醒和不可執行, 進程必須等待直到有中斷發生)
  4. 僵死(進程已終止, 但進程描述符存在, 直到父進程呼叫wait4()系統呼叫後釋放)
  5. 停止(進程收到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


IT145.com E-mail:sddin#qq.com