top - display Linux tasks
man top 查看命令文檔
1、統計信息區
第一行:隊列信息,同uptime命令的執行結果
19:53:24 當前系統日期
up 15:54 系統運行時間,格式爲時:分
5 users 登陸過系統的用戶數量
load average: 0.00, 0.00, 0.00 系統負載,即任務隊列的平均長度。 三個數值分別爲 1分鐘、5分鐘、15分鐘前到現在的平均值
2、第二、三行爲進程和CPU的信息
Tasks: 91 total 進程總數
2 running 正在運行的進程數
89 sleeping 休眠的進程數
0 stopped 停止的進程數
0 zombie 殭屍進程數
Cpu(s) 0.0%us 用戶空間佔用CPU百分比
0.4%sy 內核空間佔用CPU百分比
0.0%ni 用戶進程空間內改變過優先級的進程佔用CPU百分比
99.3%id 空閒CPU百分比
0.0%wa 等待輸入輸出的CPU時間百分比
0.0%hi - 硬中斷佔用CPU的百分比
0.4%si - 軟中斷佔用CPU的百分比
0.0%st - 是當hypervisor服務器另一個虛擬處理器的時候,虛擬CPU等待實際CPU的時間的百分比。當st值比較高的話,你需要向主機供應商申請擴容虛擬機。服務器上的另一個虛擬機可能擁有更大更多的CPU時間片,你可能需要申請升級以與之競爭。另外高steal值可能意味着主機供應商在服務器上過量地出售虛擬機。如果升級了虛擬機,steal值還不降的話,你應該尋找另一家服務供應商。
3,內存狀態
Mem: 498168k total(內存總量), 275796k used(已使用內存量), 222372k free(空閒內存量), 75464k buffers(緩存的內存量)
4,swap交換分區信息
Swap: 524284k total(交換區總量), 0k used(使用的交換區總量), 524284k free(剩餘交換區總量), 57964k cached( 緩衝的交換區總量)
5、各進程(任務)的狀態監控
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 — 進程名稱(命令名/命令行)
root@nginx02 ~
# top
top - 19:53:24 up 15:54, 5 users, load average: 0.00, 0.00, 0.00
Tasks: 91 total, 2 running, 89 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.4%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.4%si, 0.0%st
Mem: 498168k total, 275796k used, 222372k free, 75464k buffers
Swap: 524284k total, 0k used, 524284k free, 57964k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 R 1.3 0.0 1:52.67 events/0
768 root 20 0 0 0 0 S 0.3 0.0 0:06.73 vmmemctl
1 root 20 0 19364 1540 1228 S 0.0 0.3 0:04.76 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.78 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.60 watchdog/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_long/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_power_ef
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
16 root 20 0 0 0 0 S 0.0 0.0 0:00.95 sync_supers
17 root 20 0 0 0 0 S 0.0 0.0 0:01.01 bdi-default
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
19 root 20 0 0 0 0 S 0.0 0.0 0:01.06 kblockd/0
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_hotplug
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata_aux
多U多核CPU監控
在top基本視圖中,按鍵盤數字“1”,可監控每個邏輯CPU的狀況:
Cpu0 如果有多個就按照這個排序
top - 20:28:58 up 16:29, 4 users, load average: 0.00, 0.00, 0.00
Tasks: 88 total, 1 running, 87 sleeping, 0 stopped, 0 zombie
Cpu0 : 0.0%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.3%si, 0.0%st
Mem: 498168k total, 273352k used, 224816k free, 75464k buffers
Swap: 524284k total, 0k used, 524284k free, 57972k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
7 root 20 0 0 0 0 S 0.3 0.0 2:05.03 events/0
1 root 20 0 19364 1540 1228 S 0.0 0.3 0:04.80 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 root 20 0 0 0 0 S 0.0 0.0 0:00.84 ksoftirqd/0
5 root RT 0 0 0 0 S 0.0 0.0 0:00.00 stopper/0
6 root RT 0 0 0 0 S 0.0 0.0 0:00.62 watchdog/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events/0
9 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_long/0
10 root 20 0 0 0 0 S 0.0 0.0 0:00.00 events_power_ef
11 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cgroup
12 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khelper
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 netns
14 root 20 0 0 0 0 S 0.0 0.0 0:00.00 async/mgr
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 pm
16 root 20 0 0 0 0 S 0.0 0.0 0:01.02 sync_supers
17 root 20 0 0 0 0 S 0.0 0.0 0:01.04 bdi-default
18 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kintegrityd/0
19 root 20 0 0 0 0 S 0.0 0.0 0:01.12 kblockd/0
20 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpid
21 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
22 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kacpi_hotplug
23 root 20 0 0 0 0 S 0.0 0.0 0:00.00 ata_aux
24 root 20 0 0 0 0 S 0.0 0.0 0:00.02 ata_sff/0
敲擊鍵盤“b”(打開/關閉加亮效果)
按f鍵查看顯示字段
有””並且標註爲大寫字母的字段是可顯示的,沒有””並且是小寫字母的字段是不顯示的。如果要在基本視圖中顯示“CODE”和“DATA”兩個字段,可以通過敲擊“r”和“s”鍵:
監控java線程數:
ps -elf | grep java | wc -l
監控網絡客戶連接數:
netstat -n | grep tcp | grep 偵聽端口 | wc -l
在Linux系統“一切都是文件”的思想貫徹指導下,所有進程的運行狀態都可以用文件來獲取。系統根目錄/proc中,每一個數字子目錄的名字都是運行中的進程的PID,進入任一個進程目錄,可通過其中文件或目錄來觀察進程的各項運行指標,例如task目錄就是用來描述進程中線程的,因此也可以通過下面的方法獲取某進程中運行中的線程數量(PID指的是進程ID):
ls /proc/PID/task | wc -l
在linux中還有一個命令pmap,來輸出進程內存的狀況,可以用來分析線程堆棧:
pmap PID