vmstat是Virtual Meomory Statistics(虛擬內存統計)的縮寫, 是實時系統監控工具。該命令通過使用knlist子程序和/dev/kmen偽設備驅動器訪問這些數據,輸出信息直接列印在屏幕。vmstat反饋的與CPU相關的信息包括:
(1)多少任務在運行
(2)CPU使用的情況
(3)CPU收到多少中斷
(4)發生多少上下文切換
② vmstat在linux中是什麼命令
vmstat是一個提供報告虛擬內存統計的工具,包括了系統內存、交換和實時處理器利用率。
命令詳解
【命令星級】 ★★★★☆
【功能說明】
vmstat是Virtual Memory
Statistics(虛擬內存統計)的縮寫,利用vmstat命令可以對操作系統的內存信息、進程狀態和CPU活動等進行監視。但是只能對系統的整體情況進行統計,無法對某個進程進行深入分析。
【語法格式】
vmstat [option] [delay [ count]]
vmstat [選項] [時間間隔[次數]]
說明:
1)在vmstat命令及後面的選項里,每個元素之間都至少有一個空格。
2)delay表示兩次輸出之間的間隔時間。
3)count表示按照delay指定的時間間隔統計的次數。
【選項說明】
表11-4針對該命令的參數選項進行了說明。
使用範例
範例11-12:顯示虛擬內存使用情況。
[root@oldboy ~]# vmstat #<==如果省略「間隔時間」和「次數」參數,則僅顯示一次報告後就退出
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71756 38600 279084 0 0 24 6 15 18 0 0 100 0 0
[root@oldboye ~]# vmstat 5 #<==表示每5秒鍾更新一次輸出信息,循環輸出,按Ctrl+C組合鍵停止輸出。
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 8 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 9 0 0 100 0 0
^C
[root@oldboye ~]# vmstat 5 6 #<==表示每5秒更新一次輸出信息,統計6次後停止輸出。
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 71804 38600 279084 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 8 9 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
0 0 0 71756 38600 279084 0 0 0 0 9 8 0 0 100 0 0
[root@oldboy ~]#
以下是命令結果說明。
第1列:procs。
q r列表示運行和等待CPU時間片的進程數。
q b列表示在等待資源的進程數。
第2列:memory。
q swpd列表示使用虛擬內存大小。
q free列表示當前空閑的物理內存數量。
q buff列表示buffers 的內存數量。
q cache列表示cache的內存數量。
第3列:swap。
q si(swap in)列表示由磁碟調入內存,也就是內存進入內存交換區的數量。
q so(swap out)列表示由內存調入磁碟,也就是內存交換區進入內存的數量。
第4列:I/O項顯示磁碟讀寫狀況。
q bi列表示從塊設備讀入數據的總量(即讀磁碟)(塊/s)。
q bo列表示寫入到塊設備的數據總量(即寫磁碟)(塊/s)。
第5列:system顯示採集間隔內發生的中斷數。
q in列表示在某一時間間隔中觀測到的每秒設備中斷數。
q cs列表示每秒產生的上下文切換次數。
第6列:CPU項顯示了CPU的使用狀態。
q us列顯示了用戶進程消耗的CPU時間百分比。
q sy列顯示了系統(內核)進程消耗的CPU時間百分比。
q id列顯示了CPU處在空閑狀態的時間百分比。
q wa列顯示了IO等待所佔用的CPU時間百分比。
q st列顯示了虛擬機佔用的CPU時間的百分比。
範例11-13:顯示活躍和非活躍內存。
[root@oldboy ~]# vmstat -a 2 5
procs -----------memory---------- ---swap-- -----io---- --system--
-----cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
0 0 0 71804 160408 165848 0 0 2 1 9 9 0 0 100 0 0
0 0 0 71756 160408 165844 0 0 0 0 11 11 0 0 100 0 0
0 0 0 71756 160408 165844 0 0 0 0 12 9 0 0 100 0 0
0 0 0 71608 160412 165672 0 0 0 1302 218 341 12 9 80 0 0
0 0 0 71608 160412 165672 0 0 0 0 10 9 0 0 100 0 0
使用-a選項顯示活躍和非活躍內存時,所顯示的內容除增加了inact和active外,其他顯示內容與範例11-12相同。
在Memory列增加的inact和active兩列,說明如下。
q inact: 非活躍內存大小(當使用-a選項時顯示)。
q active: 活躍的內存大小(當使用-a選項時顯示)。
範例11-14:查看內存使用的詳細信息。
[root@oldboy ~]# vmstat -s
486640 total memory
414572 used memory
165656 active memory
160420 inactive memory
72068 free memory
……
這些信息的分別來自於/proc/meminfo,/proc/stat和/proc/vmstat。
範例11-15:查看磁碟的讀/寫。
[root@oldboy ~]# vmstat -d
disk- ------------reads------------ ------------writes-----------
-----IO------
total merged sectors ms total merged sectors ms cur sec
ram0 0 0 0 0 0 0 0 0 0 0
ram1 0 0 0 0 0 0 0 0 0 0
……
sr0 0 0 0 0 0 0 0 0 0 0
sda 14667 3623 594388 6737 12864 32806 365372 44250 0 30
這些信息主要來自於/proc/diskstats。其中的merged表示一次來自於合並的寫/讀請求,一般系統會把多個連接/鄰近的讀/寫請求合並到一起來操作。
範例11-16:查看/dev/sda1磁碟的讀寫統計信息。
[root@oldboy ~]# vmstat -p /dev/sda1
sda1 reads read sectors writes requested writes
502 4162 14 68
這些信息主要來自於/proc/diskstats。各列的說明如下。
q reads:來自於這個分區的讀的次數。
q read sectors:來自於這個分區的讀扇區的次數。
q writes:來自於這個分區的寫的次數。
q requested writes:來自於這個分區的寫請求次數。
摘自:跟老男孩學Linux運維:核心系統命令實戰 第11章 版權歸原作者所有
③ 如何用命令檢查Linux伺服器性能
1、查看物理cpu個數:
cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l
2、查看每個物理cpu中的core個數:
cat /proc/cpuinfo |grep "cpu cores"|wc -l
3、邏輯cpu的個數:
cat /proc/cpuinfo |grep "processor"|wc -l
物理cpu個數*核數=邏輯cpu個數(不支持超線程技術的情況下)
④ 幾個常用的linux性能監控命令
1. sar
每兩秒刷新一次, 總共5次
[root@dbhost01 ~]# sar 2 5
Linux 2.6.32-504.el6.x86_64 (dbhost01) 03/30/2018 _x86_64_ (4 CPU)
02:53:15 PM CPU %user %nice %system %iowait %steal %idle
02:53:17 PM all 0.66 0.00 1.72 0.66 0.00 96.96
02:53:19 PM all 1.34 0.00 3.35 0.80 0.00 94.51
02:53:21 PM all 0.79 0.00 1.59 1.45 0.00 96.17
02:53:23 PM all 0.40 0.00 2.00 0.80 0.00 96.80
02:53:25 PM all 0.66 0.00 1.85 0.79 0.00 96.70
Average: all 0.77 0.00 2.10 0.90 0.00 96.23
2. top
top -a 按照內存降序
[root@dbhost01 ~]# top -a
top - 15:00:54 up 6:04, 1 user, load average: 0.31, 0.19, 0.11
Tasks: 306 total, 1 running, 305 sleeping, 0 stopped, 0 zombie
Cpu(s): 7.8%us, 2.4%sy, 0.0%ni, 88.9%id, 0.8%wa, 0.0%hi, 0.1%si, 0.0%st
Mem: 4048972k total, 3848576k used, 200396k free, 134844k buffers
Swap: 4194300k total, 1788k used, 4192512k free, 1835360k cached
3. vmstat
vmstat用於顯示虛擬內存,內核線程,磁碟,系統進程, CPU活動等統計信息。
需要安裝sysstat工具。
[root@dbhost01 ~]# vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 1788 202508 135064 1835920 0 0 32 26 96 276 1 2 95 1 0
[root@dbhost01 ~]#
[root@dbhost01 ~]# vmstat 2 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 1788 202336 135068 1836000 0 0 32 26 97 276 1 2 95 1 0
0 0 1788 202624 135068 1836000 0 0 25 29 4012 6682 0 1 98 1 0
0 0 1788 202624 135072 1836004 0 0 57 87 4003 6685 0 1 98 1 0
1 0 1788 202508 135072 1836004 0 0 57 33 4402 7353 1 1 98 0 0
0 0 1788 202540 135076 1836004 0 0 33 47 4002 6674 0 1 98 1 0
4. lsof(list open files)
[root@dbhost01 ~]# lsof | grep 1521
certmonge 2348 root 16r FIFO 0,8 0t0 15212 pipe
certmonge 2348 root 18r FIFO 0,8 0t0 15218 pipe
gipcd.bin 2754 grid 109u unix 0xffff880139152180 0t0 36936 socket
5. tcpmp
tcpmp -i eth1
15:24:28.777779 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516
15:24:28.777809 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393080:393596, ack 105, win 148, options [nop,nop,TS val 22996360 ecr 2443327], length 516
15:24:28.778976 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372
15:24:28.779011 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393596:393968, ack 105, win 148, options [nop,nop,TS val 22996361 ecr 2443327], length 372
15:24:28.779013 IP 192.168.2.82.50990 > dbhost01.ssh: Flags [.], ack 393968, win 16652, options [nop,nop,TS val 2443327 ecr 22996360], length 0
15:24:28.779481 IP dbhost02-priv.23602 > dbhost01-priv.24271: UDP, length 556
15:24:28.779585 IP dbhost01-priv.24271 > dbhost02-priv.23602: UDP, length 80
15:24:28.779909 IP dbhost01-priv.24271 > dbhost02-priv.23602: UDP, length 80
15:24:28.780584 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756
15:24:28.780590 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 393968:394724, ack 105, win 148, options [nop,nop,TS val 22996362 ecr 2443327], length 756
15:24:28.780820 IP dbhost01-priv.24271 > dbhost02-priv.23602: UDP, length 556
15:24:28.782232 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452
15:24:28.782235 IP dbhost01.ssh > 192.168.2.82.50990: Flags [P.], seq 394724:395176, ack 105, win 148, options [nop,nop,TS val 22996364 ecr 2443327], length 452
6.netstat
[root@dbhost01 ~]# netstat -a | grep oracle
unix 2 [ ACC ] STREAM LISTENING 31861 /var/tmp/.oracle/ora_gipc_sdbhost01gridmyracdb-clusterCRFM_SIPC
unix 2 [ ACC ] STREAM LISTENING 33820 /var/tmp/.oracle/sdbhost01DBG_LOGD
unix 2 [ ACC ] STREAM LISTENING 41177 /var/tmp/.oracle/sdbhost01DBG_EVMD
unix 2 [ ACC ] STREAM LISTENING 65106 /var/tmp/.oracle/sAevm
unix 2 [ ACC ] STREAM LISTENING 65108 /var/tmp/.oracle/sSYSTEM.evm.acceptor.auth
7. htop
需要安裝
8. iostat
Total DISK READ: 91.48 K/s | Total DISK WRITE: 45.27 K/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
4071 be/4 oracle 30.18 K/s 0.00 B/s 0.00 % 4.69 % ora_lmon_orcl1
4117 be/4 oracle 60.36 K/s 15.09 K/s 0.00 % 3.69 % ora_ckpt_orcl1
2989 rt/4 grid 965.71 B/s 0.00 B/s 0.00 % 2.13 % ocssd.bin
4099 be/4 oracle 0.00 B/s 30.18 K/s 0.00 % 0.07 % ora_ckpt_test
2987 rt/4 grid 0.00 B/s 482.86 B/s 0.00 % 0.03 % ocssd.bin
2979 rt/3 root 0.00 B/s 3.77 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01
2980 rt/3 root 0.00 B/s 15.09 K/s 0.00 % 0.00 % ologgerd -M -d /g01/grid/app/11.2.0/grid/crf/db/dbhost01
9. iftop(流量監控工具)
⑤ linux伺服器監控的幾個方法和命令
監控會降低性能的。同問filter、simls是什麼?沒用過。
當伺服器系統性能突然低於平均應有的情況,問題可能來自在執行的進程、內存的使用率、磁碟的性能和CPU 的壓力。在預算有限的時代,理解如何優化系統性能比以往任何時候都重要。要實現它的前提是,你必須充分了解自己的伺服器,從而找到真正的瓶頸所在。本文提供一些基礎的工具來辨別和處理一些性能問題。工作過程是:首先查看整個系統的狀態(伺服器整體)後是檢查特定的子系統(內存、處理器、IO等)。
一、系統負載監測
1.使用uptime命令
2.使用cron命令進行定時監測系統負載:
二、Unix進程運行的監測
1.使用ps命令
Unix系統提供了ps等察看進程信息的系統調用,通過結合使用這些系統調用,我們可以清晰地了解進程的運行狀態以及存活情況,從而採取相應的措施,來確保Unix系統的性能。它們是目前在Unix下最常見的進程狀況查看工具,是隨 Unix版本發行的,安裝好系統之後,用戶就可以使用。 這里以ps命令為例,ps命令是最基本同時也是非常強大的進程查看命令。利用它可以確定有哪些進程正在運行及運行的狀態、進程是否結束、進程有沒有僵死、哪些進程佔用了過多的資源等。ps命令可以監控後台進程的工作情況,因為後台進程是不和屏幕鍵盤這些標准輸入/輸出設備進行通信的
2.使用進程監控工具
如果安裝了CDE環境,可以使用圖形界面進程等系統信息,使用方法是單擊「前面板」上「工具」子面板上的「查找進程」控制項。 顯示「進程管理器」主窗口。它立即對工作站進行采樣,並顯示所有當前進程的采樣。
三、內存使用情況監測
內存是Unix內核所管理的最重要的資源之一。內存管理系統是操作系統中最為重要的部分,因為系統的物理內存總是少於系統所需要的內存數量。虛擬內存就是為了克服這個矛盾而採用的策略。系統的虛擬內存通過在各個進程之間共享內存而使系統看起來有多於實際內存的內存容量。Unix支持虛擬內存, 就是使用磁碟作為RAM的擴展,使可用內存相應地有效擴大。核心把當前不用的內存塊存到硬碟,騰出內存給其他目的。當原來的內容又要使用時,再讀回內存。
⑥ Linux系統監控要用到哪些命令
記錄一下自己常用的linux系統命令,方便以後查閱,發覺記憶越來越不行了
找到最耗CPU的java線程ps命令
命令:ps -mp pid -o THREAD,tid,time 或者 ps -Lfp pid
結果展示:
這個命令的作用,主要是可以獲取到對應一個進程下的線程的一些信息。 比如你想分析一下一個java進程的一些運行瓶頸點,可以通過該命令找到所有當前Thread的佔用CPU的時間,也就是這里的最後一列。
比如這里找到了一個TID : 30834 ,所佔用的TIME時間最高。
通過 printf "%x\n" 30834 首先轉化成16進制, 繼續通過jstack命令mp出當前的jvm進程的堆棧信息。 通過Grep命令即可以查到對應16進制的線程id信息,很快就可以找到對應最耗CPU的代碼快在哪。
簡單的解釋下,jstack下這一串線程信息內容:
"DboServiceProcessor-4-thread-295" daemon prio=10 tid=0x00002aab047a9800 nid=0x7d9b waiting on condition [0x0000000046f66000]
nid : 對應的linux操作系統下的tid,就是前面轉化的16進制數字
tid: 這個應該是jvm的jmm內存規范中的唯一地址定位,如果你詳細分析jvm的一些內存數據時用得上,我自己還沒到那種程度,所以先放下
top命令
命令:top -Hp pid
結果顯示:
和前面的效果一下,你可以實時的跟蹤並獲取指定進程中最耗cpu的線程。 再用前面的方法提取到對應的線程堆棧信息。
判斷I/O瓶頸
mpstat命令
命令:mpstat -P ALL 1 1000
結果顯示:
注意一下這裡面的%iowait列,CPU等待I/O操作所花費的時間。這個值持續很高通常可能是I/O瓶頸所導致的。
通過這個參數可以比較直觀的看出當前的I/O操作是否存在瓶頸
iostat命令
命令: iostat -m -x 1 1000
同樣你可以觀察對應的CPU中的%iowait數據,除此之外iostat還提供了一些更詳細的I/O狀態數據,比如比較重要的有:
avgqu-sz : The average queue length of the requests that were issued to the device. (磁碟隊列的請求長度,正常的話2,3比較好。可以和cpu的load一樣的理解)
await : The average time (in milliseconds) for I/O requests issued to the device to be served. (代表一個I/O操作從wait到完成的總時間)
svctm和%util都是代表處理該I/O請求花費的時間和CPU的時間比例。 判斷是否瓶頸時,這兩個參數不是主要的
r/s w/s 和 rMB/s wMB/s 都是代表當前系統處理的I/O的一些狀態,前者是我們常說的tps,後者就是吞吐量。這也是評價一個系統的性能指標
pid命令
命令: pidstat -p pid -u -d -t -w -h 1 1000
結果顯示:
相當實用的一個命令,可以基於當個進程分析對應的性能數據,包括CPU,I/O,IR , CS等,可以方便開發者更加精細化的觀察系統的運行狀態。不過pidstat貌似是在2.6內核的一些較新的版本才有,需要安裝sysstat包。
ubuntu下,可以通過sudo apt-get install sysstat進行安裝。
sar命令
命令:sar -x pid 1 1000
sar也可以指定對應的pid,關注固定的幾個參數,沒有pidstat那麼強大。 看不到對應的I/O, IR等信息。
sar的功能可以覆蓋mpstat , iostat的相關功能。
dstat命令
命令:dstat -y --tcp 1 1000
通過dstat --tcp可以比較方便的看到當前的tcp的各種狀態,不需要每次netstat -nat去看
其他命令
netstat -natp : 查看對應的網路鏈接,關注下Recv-Q , Send-Q , State。
lsof -p pid : 查找對應pid的文件句柄
lsof -i : 80 : 查找對應埠被哪個進程佔用
lsof /tmp/1.txt :查找對應文件被哪個進程佔用
tcpmp / wireshark :抓包分析工具
jstat / jmap / jstack / jps 等一系列的java監控命令
最後
如果你想做一些性能調優的工作,一定要善於利用一些工具進行關注相應的狀態。通過linux命令你可以比較方便的觀測到CPU , I/O , network等一些比較外圍的狀態, 很多時候就已經可以解決大部分的問題。jvm內部的一些運行狀態監控,得需要藉助一些特有的工具進行細粒度的觀測。
⑦ linux監控命令都有哪些啊
要監控什麼
內存 free
進程 top
登錄用戶 w 或who
⑧ 如何使用top命令監控Linux系統性能
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。
top - 01:06:48 up 1:22, 1 user, load average: 0.06, 0.60, 0.48
Tasks: 29 total, 1 running, 28 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.3% us, 1.0% sy, 0.0% ni, 98.7% id, 0.0% wa, 0.0% hi, 0.0% si
Mem: 191272k total, 173656k used, 17616k free, 22052k buffers
Swap: 192772k total, 0k used, 192772k free, 123988k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1379 root 16 0 7976 2456 1980 S 0.7 1.3 0:11.03 sshd
14704 root 16 0 2128 980 796 R 0.7 0.5 0:02.72 top
1 root 16 0 1992 632 544 S 0.0 0.3 0:00.90 init
2 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0
3 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/0
統計信息區
前五行是系統整體的統計信息。第一行是任務隊列信息,同 uptime 命令的執行結果。其內容如下:
01:06:48 當前時間
up 1:22 系統運行時間,格式為時:分
1 user 當前登錄用戶數
load average: 0.06, 0.60, 0.48 系統負載,即任務隊列的平均長度。
三個數值分別為 1分鍾、5分鍾、15分鍾前到現在的平均值。
第二、三行為進程和CPU的信息。當有多個CPU時,這些內容可能會超過兩行。內容如下:
Tasks: 29 total 進程總數
1 running 正在運行的進程數
28 sleeping 睡眠的進程數
0 stopped 停止的進程數
0 zombie 僵屍進程數
Cpu(s): 0.3% us 用戶空間佔用CPU百分比
1.0% sy 內核空間佔用CPU百分比
0.0% ni 用戶進程空間內改變過優先順序的進程佔用CPU百分比
98.7% id 空閑CPU百分比
0.0% wa 等待輸入輸出的CPU時間百分比
0.0% hi
0.0% si
最後兩行為內存信息。內容如下:
Mem: 191272k total 物理內存總量
173656k used 使用的物理內存總量
17616k free 空閑內存總量
22052k buffers 用作內核緩存的內存量
Swap: 192772k total 交換區總量
0k used 使用的交換區總量
192772k free 空閑交換區總量
123988k cached 緩沖的交換區總量。
內存中的內容被換出到交換區,而後又被換入到內存,但使用過的交換區尚未被覆蓋,
該數值即為這些內容已存在於內存中的交換區的大小。
相應的內存再次被換出時可不必再對交換區寫入。
進程信息區
統計信息區域的下方顯示了各個進程的詳細信息。首先來認識一下各列的含義。
序號 列名 含義
a PID 進程id
b PPID 父進程id
c RUSER Real user name
d UID 進程所有者的用戶id
e USER 進程所有者的用戶名
f GROUP 進程所有者的組名
g TTY 啟動進程的終端名。不是從終端啟動的進程則顯示為 ?
h PR 優先順序
i NI nice值。負值表示高優先順序,正值表示低優先順序
j P 最後使用的CPU,僅在多CPU環境下有意義
k %CPU 上次更新到現在的CPU時間佔用百分比
l TIME 進程使用的CPU時間總計,單位秒
m TIME+ 進程使用的CPU時間總計,單位1/100秒
n %MEM 進程使用的物理內存百分比
o VIRT 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
p SWAP 進程使用的虛擬內存中,被換出的大小,單位kb。
q RES 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
r CODE 可執行代碼佔用的物理內存大小,單位kb
s DATA 可執行代碼以外的部分(數據段+棧)佔用的物理內存大小,單位kb
t SHR 共享內存大小,單位kb
u nFLT 頁面錯誤次數
v nDRT 最後一次寫入到現在,被修改過的頁面數。
w S 進程狀態。
D=不可中斷的睡眠狀態
R=運行
S=睡眠
T=跟蹤/停止
Z=僵屍進程
x COMMAND 命令名/命令行
y WCHAN 若該進程在睡眠,則顯示睡眠中的系統函數名
z Flags 任務標志,參考 sched.h
默認情況下僅顯示比較重要的 PID、USER、PR、NI、VIRT、RES、SHR、S、%CPU、%MEM、TIME+、COMMAND 列。可以通過下面的快捷鍵來更改顯示內容。
更改顯示內容
通過 f 鍵可以選擇顯示的內容。按 f 鍵之後會顯示列的列表,按 a-z 即可顯示或隱藏對應的列,最後按回車鍵確定。
按 o 鍵可以改變列的顯示順序。按小寫的 a-z 可以將相應的列向右移動,而大寫的 A-Z 可以將相應的列向左移動。最後按回車鍵確定。
按大寫的 F 或 O 鍵,然後按 a-z 可以將進程按照相應的列進行排序。而大寫的 R 鍵可以將當前的排序倒轉。
命令使用
1. 工具(命令)名稱
top
2.工具(命令)作用
顯示系統當前的進程和其他狀況;
top是一個動態顯示過程,即可以通過用戶按鍵來不斷刷新當前狀態.如果在前台執行該命令,它將獨占前台,直到用戶終止該程序為止.
比較准確的說,top命令提供了實時的對系統處理器的狀態監視.它將顯示系統中CPU最「敏感」的任務列表.該命令可以按CPU使用.內存使用和執行時間
對任務進行排序;而且該命令的很多特性都可以通過互動式命令或者在個人定製文件中進行設定.
3.環境設置
在Linux下使用。
4.使用方法
4.1使用格式
top [-] [d] [p] [q] [c] [C] [S] [s] [n]
4.2參數說明
d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
p 通過指定監控進程ID來僅僅監控某個進程的狀態。
q該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶許可權,那麼top將以盡可能高的優先順序運行。
S 指定累計模式
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閑置或者僵死進程。
c 顯示整個命令行而不只是顯示命令名
4.3其他
下面介紹在top命令執行過程中可以使用的一些交互命令。從使用角度來看,熟練的掌握這些命令比掌握選項還重要一些。這些命令都是單字母的,如果在命令行選項中使用了s選項,則可能其中一些命令會被屏蔽掉。
Ctrl+L 擦除並且重寫屏幕。
h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。
k 終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什麼樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。
i 忽略閑置和僵死進程。這是一個開關式命令。
q 退出程序。
r 重新安排一個進程的優先順序別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先順序值。輸入一個正值將使優先順序降低,反之則可以使該進程擁有更高的優先權。默認值是10。
S 切換到累計模式。
s 改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
f或者F 從當前顯示中添加或者刪除項目。
o或者O 改變顯示項目的順序。
l 切換顯示平均負載和啟動時間信息。
m 切換顯示內存信息。
t 切換顯示進程和CPU狀態信息。
c 切換顯示命令名稱和完整命令行。
M 根據駐留內存大小進行排序。
P 根據CPU使用百分比大小進行排序。
T 根據時間/累計時間進行排序。
W 將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法。