在 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
使用其他命令
ps
可以通過管道與其他命令組合使用。
如果你想顯示 ps 命令的輸出,一次一頁,通過管道將它傳送到 less 命令:
ps -ef | less
ps
命令的輸出可以用 grep 進行過濾。 例如,爲了只顯示屬於 root 用戶的進程,你可以運行:
ps -ef | grep root
小結
ps
命令是解決 Linux 系統問題時最常用的命令之一。 它有許多選項,但通常大多數用戶使用 ps aux 或 ps-ef 來收集有關正在運行的進程的信息。
有關 ps
的詳細信息,請在終端中鍵入 man ps
。