Linux常用命令06 - ps

在 Linux 中,程序的運行實例稱爲進程。 有時候,在 Linux 機器上工作時,您可能需要了解當前正在運行的進程。

您可以使用許多命令來查找正在運行的進程的信息,其中 ps、 pstree 和 top 是最常用的命令。

本文說明如何使用 ps 命令列出當前正在運行的進程並顯示有關這些進程的信息。

如何使用 ps 命令

ps 命令的一般語法如下:

ps [OPTIONS]

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

  • 樣式選項,前面加一個破折號
  • 風格的選項,使用無破折號
  • 長選項,前面加兩個破折號

不同的選項類型可以混合使用,但在某些特定情況下,可能會出現衝突,因此最好堅持使用一種選項類型。

可以對 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 命令時,用戶尋找的最重要的信息是進程阻止一個故障進程.
TTY - 進程控制終端的名稱
TIME - 進程的累計 CPU 時間,以分鐘和秒錶示
CMD - 用於啓動進程的命令的名稱

上面的輸出不是很有用,因爲它不包含很多信息。 ps 命令的真正威力來自於附加選項的啓動。

ps 命令接受大量的選項,這些選項可用於顯示特定的一組進程和關於進程的不同信息,但是在日常使用中只需要少量的選項。

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

BSD 表格:

ps aux

a - 這個 a 參數顯示所有用戶的進程。 只有與終端和組長的進程沒有關聯的進程沒有顯示
u - 代表一種面向用戶的格式,它提供有關流程的詳細信息
x - 列出沒有控制終端的進程。這些進程主要是在啓動時啓動的running in the background 在後臺運行.

該命令在十一列中顯示信息,分別標記爲 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 (zombie), (殭屍),S (sleeping), and (休眠) ,以及R (running). (運行)
  • START - 命令開始的時間

選項告訴 ps 顯示父進程到子進程的樹視圖:

ps auxf

The ps command also allows you to sort the output. For example, to sort the output based on the memory usage, you would use:

ps 命令還允許對輸出進行排序。 例如,要根據內存使用情況對輸出進行排序,可以使用:

ps aux --sort=-%mem

Unix 格式:

ps -ef
  • -e 顯示所有進程
  • -f 列出了完整格式的列表,它提供了有關進程的詳細信息

該命令以八列顯示信息,分別標記爲 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 運行進程的用戶
  • PPID 父進程的 ID
  • C 進程 CPU 利用率
  • STIME 當命令開始的時候

若要只查看作爲特定用戶運行的進程,請鍵入以下命令,其中 linuxize 是用戶名:

ps -f -U linuxize -u linuxize

自定義格式

O 選項允許您指定在運行 ps 命令時顯示哪些列。

例如,爲了只打印關於 PID 和 COMMAND 的信息,你可以運行以下命令之一:

ps -efo pid,comm
ps auxo pid,comm

2OZIr6

使用其他命令

ps 可以通過管道與其他命令組合使用。

如果你想顯示 ps 命令的輸出,一次一頁,通過管道將它傳送到 less 命令:

ps -ef | less

4Z1rEY

ps 命令的輸出可以用 grep 進行過濾。 例如,爲了只顯示屬於 root 用戶的進程,你可以運行:

ps -ef | grep root

3p1Yi8

小結

ps 命令是解決 Linux 系統問題時最常用的命令之一。 它有許多選項,但通常大多數用戶使用 ps aux 或 ps-ef 來收集有關正在運行的進程的信息。

有關 ps 的詳細信息,請在終端中鍵入 man ps
kXnTbz

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章