1 ps
1.1 ps -ef
有哪些字段
ps -ef 命令在Unix/Linux系統中用于顯示當前運行的進程。輸出的字段通常包括:
- UID:啟動進程的用戶ID。
- PID:進程ID。
- PPID:父進程ID。
- C:CPU利用率。
- STIME:進程啟動時間。
- TTY:進程終端類型。
- TIME:進程占用CPU的時間。
- CMD:啟動進程的命令。
1.2 ps
與 ps -ef
的區別
ps
:這個命令不帶任何參數時,默認顯示與當前終端會話相關聯的進程。ps -ef
:這個命令顯示系統中所有運行的進程,其中:-e
選項表示顯示所有進程。-f
選項提供完整的詳細輸出,包括進程的UID、PID、PPID、啟動時間等。
2 top命令
top
命令是一個非常流行的 Linux 工具,用于實時顯示系統中進程的動態運行信息。它提供了一個實時更新的視圖,顯示哪些進程正在占用最多的系統資源,包括 CPU 和內存。這里是 top
命令的一些關鍵特性和輸出字段的詳細解釋:
2.1 主要特性
-
實時監控:
top
命令提供了一個實時更新的視圖,顯示系統的當前狀態,包括正在運行的進程和它們的資源占用。 -
排序和查找:可以根據CPU、內存等不同的資源消耗對進程進行排序,也可以搜索特定的進程。
-
交互式控制:用戶可以在
top
運行時交互式地執行命令,例如更改排序順序、殺死進程等。
2.2 輸出字段解釋
top
命令的輸出通常分為兩部分:系統概覽和進程列表。
2.2.1 系統概覽
- load average:顯示了過去1分鐘、5分鐘和15分鐘的平均負載。
- Tasks:當前的進程總數,以及它們的狀態(運行、休眠、停止、僵尸)。
- %Cpu(s):CPU的使用情況,包括用戶空間占比、系統空間占比、空閑比例等。
- KiB Mem 和 KiB Swap:內存和交換空間的使用情況。
2.2.2 進程列表
- PID:進程ID。
- USER:運行進程的用戶。
- PR:進程的優先級。
- NI:進程的nice值,影響進程的優先級。
- VIRT:進程占用的虛擬內存總量。
- RES:進程占用的物理內存量。
- SHR:進程共享的內存量。
- S:進程狀態(如睡眠(S)、運行(R)、停止(T)等)。
- %CPU:進程占用的CPU百分比。
- %MEM:進程占用的物理內存百分比。
- TIME+:進程占用CPU的總時間。
- COMMAND:啟動進程的命令。
2.2.3 交互命令
在 top
運行時,用戶可以使用不同的鍵盤命令進行交互:
h
或?
:顯示幫助。k
:殺死一個進程。f
:選擇要顯示的字段。r
:重新設定一個進程的nice值。P
:按CPU使用率排序。M
:按內存使用量排序。
2.3 top命令和ps -ef命令的區別
top
命令和 ps -ef
命令都用于查看運行在Linux系統上的進程,但它們之間有一些關鍵的區別:
2.3.1 top命令
-
動態實時更新:
top
提供一個動態的實時視圖,它會定期刷新(默認情況下每幾秒刷新一次),顯示當前的進程和它們對系統資源(如CPU和內存)的實時使用情況。
-
交互性:
top
是交互式的;用戶可以在其運行時執行不同的命令,比如改變排序順序、殺死進程等。
-
系統資源使用概覽:
top
顯示系統概覽信息,如CPU使用率、內存使用量、負載平均值等。
2.3.2 ps -ef命令
-
靜態快照:
ps -ef
提供的是在命令執行時刻的進程快照。它不會實時更新;要查看最新信息,需要重新運行命令。
-
非交互性:
ps -ef
是非交互式的,它只打印出執行時刻的進程信息,并且無法在命令運行時進行操作。
-
詳細進程信息:
ps -ef
提供了每個進程的詳細信息,包括PID、所屬用戶、父進程ID、啟動時間、命令等。
2.3.3 使用場景
-
使用
top
時,通常是為了監控系統的實時性能和查看哪些進程正在使用最多資源。它適用于系統監控和動態問題診斷。 -
使用
ps -ef
時,適用于需要獲取系統在某一時刻的進程快照,或者當需要了解特定進程的信息時。
總之,top
更適合于實時監控和交互操作,而 ps -ef
更適合于獲取一次性的詳細進程信息。兩者都是系統管理員和用戶診斷系統狀態和性能問題時的重要工具。
3 vmstat
3.1 vmstat 字段詳解
vmstat
(虛擬內存統計)命令提供了關于系統的虛擬內存、物理內存、系統調用、I/O、CPU活動等方面的信息。常見字段包括:
-
procs(進程):
r
:等待運行的進程數。b
:處于不可中斷睡眠狀態的進程數。
-
memory(內存):
swpd
:使用虛擬內存的大小。free
:空閑的物理內存大小。buff
:用作緩沖區的內存大小。cache
:用作緩存的內存大小。
-
swap(交換):
si
:每秒從磁盤交換到內存的大小。so
:每秒從內存交換到磁盤的大小。
-
io(輸入/輸出):
bi
:每秒從塊設備讀取的塊數。bo
:每秒向塊設備寫入的塊數。
-
system(系統):
in
:每秒中斷數,包括時鐘中斷。cs
:每秒上下文切換數。
-
cpu(CPU):
us
:用戶空間占用CPU的百分比。sy
:內核空間占用CPU的百分比。id
:空閑CPU百分比。wa
:等待I/O的CPU時間百分比。st
:被虛擬機偷取的CPU時間百分比(在虛擬化環境中)。