016 Linux 臥槽,看懂程式資訊也不難嘛?top、ps

不甩鍋的碼農發表於2022-02-20

file

1 扒開看看 top 命令引數詳情

Linux top 命令用於實時顯示 process 的動態詳情。

file

第一行,[top - ]任務佇列資訊

系統時間:07:27:05
執行時間(系統已開機多長時間):up 1:57 min
當前登入使用者數:3 user
cpu 平均負載:load average: 0.00, 0.00, 0.00
//三個數值分別為,1分鐘,5分鐘,15分鐘的負載情況

第二行,[Tasks] 任務(程式)

總程式數:150 total, 
正在執行的程式數:1 running, 
睡眠的程式數:149 sleeping, 
停止的程式數: 0 stopped, 
殭屍程式數: 0 zombie

第三行,[Cpu(s)]狀態資訊

0.0%us【user space】— 使用者空間佔用CPU的百分比。
0.3%sy【sysctl】— 系統核心佔用CPU的百分比。
0.0%ni【】— 改變過優先順序的程式佔用CPU的百分比
99.7%id【idolt】— 空閒CPU百分比
0.0%wa【wait】— IO等待佔用CPU的百分比
0.0%hi【Hardware IRQ】— 硬中斷佔用CPU的百分比
0.0%si【Software Interrupts】— 軟中斷佔用CPU的百分比

第四行,[Mem]記憶體狀態

//total:總記憶體大小,used:已使用的記憶體,free:空閒的記憶體,buffers:快取的記憶體大小
1003020k total,   234464k used,   777824k free,    24084k buffers

第五行,[Swap]虛擬記憶體交換分割槽資訊

//total:交換區總量;used:使用的交換區總量;free:空閒交換區總量;cached:快取的交換區總量
2031612k total,      536k used,  2031076k free,   505864k cached

第六行,空行

第七行以下:各程式(任務)的狀態監控

PID — 程式id
USER — 程式所有者
PR — 程式優先順序
NI — nice值。負值表示高優先順序,正值表示低優先順序
VIRT — 程式使用的虛擬記憶體總量,單位kb。VIRT=SWAP+RES
RES — 程式使用的、未被換出的實體記憶體大小,單位kb。RES=CODE+DATA
SHR — 共享記憶體大小,單位kb
S —程式狀態。D=不可中斷的睡眠狀態 R=執行 S=睡眠 T=跟蹤/停止 Z=殭屍程式
%CPU — 上次更新到現在的CPU時間佔用百分比
%MEM — 程式使用的實體記憶體百分比
TIME+ — 程式使用的CPU時間總計,單位1/100秒
COMMAND — 程式名稱(命令名/命令列)

2 top 的一些常用互動命令和使用案例

top 命令,然後按數字 "1" 可監控每個邏輯CPU的狀況
q # 退出程式
m # 切換顯示記憶體資訊
M # 根據駐留記憶體大小進行排序
t # 切換顯示程式和CPU狀態資訊
P # 根據CPU使用百分比大小進行排序
top -d 3 # 表示更新週期為3秒
top -p 11 # 顯示程式號為11的程式資訊,CPU、記憶體佔用率等

3 top 命令裡面的 buffer 和 cache 區別?

Stack Exchange 對這個的討論貼
what-do-the-buff-cache-and-avail-mem-fields-in-top-mean

摘取關鍵資訊

buffers
Memory used by kernel buffers (Buffers in /proc/meminfo)

cache
Memory used by the page cache and slabs  (Cached and SReclaimable in /proc/meminfo)
buff/cache

buff/cache
Sum of buffers and cache

4 ps 命令常用案例和引數說明

Linux ps (process status)命令用於顯示當前程式的狀態,類似於 windows 的工作管理員。

ps -aux |grep {要查詢的程式}

示例:ps -aux|grep zookeeper
# 最常用的方法是 ps -aux,結合 grep 去查詢特定的程式。
#-a 代表 all。
#-u 以使用者為主的格式來顯示程式狀況。
#-x 顯示所有程式,不以終端機來區分。

ps -ef |grep {要查詢的程式}

示例:ps -ef | grep zookeeper
# -e 和 -a 的意思是一樣的,即顯示有關其他使用者程式的資訊,包括那些沒有控制終端的程式。
# -f 顯示使用者id,程式id,父程式id,最近CPU使用情況,程式開始時間等等。

ps 命令其它常用案例

# 顯示 root 使用者程式資訊
ps -u root

# 結合 less 命令和管道來使用
ps -aux |less

# 根據 CPU 使用來升序排序
ps -aux --sort -pcpu | less

# 根據記憶體使用來升序排序
ps -aux --sort -pmem | less

# 結合 head,只顯示前十個
ps -aux --sort -pcpu,+pmem | head -n 10

5 小結

Linux 看懂程式狀況資訊也不難嘛?top、ps 兩個就滿足一般使用!

「不甩鍋的碼農」原創,轉載請註明來源,未經授權禁止商業用途!同名 GZH 請關注!

相關文章