首頁 > 軟體

Linux ps 命令用法詳解

2020-06-16 16:33:34

在 Linux 中,程式的執行範例稱為進程。有時,在 Linux 機器上工作時,您可能需要找出當前正在執行的進程。

有很多命令可以幫助你來找到正在執行的進程的資訊,但是 ps 以及 top 是最常用的。

在本文中,我們將討論如何在Linux中使用該 ps 命令列出當前正在執行的進程並顯示有關這些進程的資訊。

如何使用 ps 命令

該 ps 命令的一般語法如下:

ps [OPTIONS]

出於歷史和相容性原因,該 ps 命令接受幾種不同型別的選項:

  • UNIX樣式選項,前面有一個破折號。
  • BSD樣式選項,無需破折號即可使用。
  • GNU長選項,前面有兩個破折號。

所有型別的選項都可以混合使用,但在某些特殊情況下可能會出現衝突,因此最好堅持使用一種選項。可以對 BSD 和 UNIX 選項進行分組。

在沒有任何選項的情況下使用它是最簡單的形式, ps 將列印四列資訊,用於在當前 shell 中執行的最少兩個進程, shell 本身以及在命令時在 shell 中執行的進程。

ps

輸出包括有關 shell(bash) 和在此 shell 中執行的進程 (ps 您鍵入的命令)的資訊:

  PID TTY          TIME CMD
 1809 pts/0    00:00:00 bash
 2043 pts/0    00:00:00 ps

四列標記 PID , TTY , TIME 和 CMD 。

  • PID - 進程 ID 。在大多數情況下,當執行 ps 命令時,使用者正在尋找的最重要資訊是過程 PID 。了解 PID 可以消除故障過程。
  • TTY - 進程控制終端的名稱。
  • TIME - 進程的累計 CPU 時間,以分鐘和秒顯示。
  • CMD - 用於啟動進程的命令的名稱。

上面的輸出不是很有用,因為它不包含太多資訊。當使用其他選項啟動時, ps 命令的真正威力就來了。

該 ps 命令有大量的引數和選項,可用於顯示特定行程群組和有關進程的不同資訊,但在日常使用中只需要少量選項。

ps  最常用於以下選項組合:

BSD 表格

ps aux
  • 該 a 選項告訴 ps 顯示所有使用者的進程,除了那些與終端沒有關聯的進程和組長的進程。
  • 的 u 代表,其提供了有關過程的詳細資訊的使用者為導向的格式。
  • 該 x 選項將 ps 在沒有控制終端的情況下列出進程。這些主要是在啟動時啟動並在後台執行的進程。

該命令將顯示在標記為 11 個的列的資訊 USER , PID , %CPU , %MEM , VSZ , RSS , STAT , START , TTY , TIME 和 CMD 。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.8  77616  8604 ?        Ss   19:47   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    19:47   0:00 [kthreadd]
...

我們已經解釋 PID , TTY , TIME 和 CMD 標籤。以下是其他標籤的說明:

  • USER - 執行該過程的使用者。
  • %CPU- 進程 cpu 利用率。
  • %MEM - 進程駐留集大小占計算機實體記憶體的百分比。
  • VSZ  - 進程的虛擬記憶體大小 KiB。
  • RSS- 進程正在使用的實體記憶體的大小。
  • STAT- 進程狀態程式碼,可以是 Z( 殭屍), S( 休眠), R( 執行 ).. 等等
  • START - 命令啟動的時間。

要列印進程樹,請新增該 f 選項。這將告訴 ps 顯示父到子進程的樹檢視。

ps auxf

該 ps 命令還允許您對輸出進行排序。例如,要根據您將使用的記憶體使用情況對輸出進行排序:

ps aux --sort=-%mem

UNIX 表單

ps -ef
  • 該 e 選項告訴 ps 顯示所有進程。
  • 該 f 站全格式房源提供有關進程的詳細資訊。

此命令將顯示在標有 7 列資訊 UID , PID , PPID , C , STIME , TIME 和 CMD 。

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 19:47 ?        00:00:01 /sbin/init
root         2     0  0 19:47 ?        00:00:00 [kthreadd]
...

尚未解釋的標籤具有以下含義:

  • UID- 與 USER 執行該流程的使用者相同。
  • PPID - 父進程的 ID 。
  • C- 與 %CPU 進程 cpu 利用率相同。
  • STIME- 與 START 命令啟動時相同。

要僅檢視作為特定使用者執行的進程,請使用以下命令,其中 linuxize 是使用者的名稱:

ps -f -U linuxize -u linuxize

使用者定義的格式

該 o 選項允許您指定執行 ps 命令時將顯示哪些列。

例如,要僅列印有關的資訊 PID , COMMAND 您將執行以下命令之一:

ps -efo pid,comm
ps auxo pid , comm 

和其他命令一塊使用 ps 命令

ps 命令能夠通過管道和其他命令一塊使用.

If you want to display the output of the ps command, one page at a time pipe it to the less command:

如果你不想一次顯示 ps 太多的輸出,請和 less 命令搭配使用

 console-bash ps -ef  | less

ps 命令的輸出也可以使用 grep 命令過濾結果. 比如只輸出 root 使用者的進程,可以使用下面的命令

 console-bash ps -ef  |  grep root

總結

在解決 Linux 系統上的問題時, ps 命令是最常用的命令之一。它有很多選項,但通常,大多數使用者使用 ps aux 或 ps -ef 收集有關正在執行的進程的資訊。


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