常見的Linux系統監控命令


 

1free

顯示當前系統未使用的和已使用的內存數目,還可以顯示被內核使用的內存緩沖區

-b:以Byte為單位顯示內存使用情況;

-k:以KB為單位顯示內存使用情況;

-m:以MB為單位顯示內存使用情況;

-o:不顯示緩沖區調節列;

-s<間隔秒數>:持續觀察內存使用狀況;

-t:顯示內存總和列

 

2df

顯示磁盤分區上的可使用的磁盤空間。默認顯示單位為KB。可以利用該命令來獲取硬盤被占用了多少空間,目前還剩下多少空間等信息。

-a--all:包含全部的文件系統;

--block-size=<區塊大小>:以指定的區塊大小來顯示區塊數目;

-h--human-readable:以可讀性較高的方式來顯示信息;

-H--si:與-h參數相同,但在計算時是以1000 Bytes為換算單位而非1024 Bytes

-i--inodes:顯示inode的信息;

-k--kilobytes:指定區塊大小為1024字節;

-l--local:僅顯示本地端的文件系統;

-m--megabytes:指定區塊大小為1048576字節;

--no-sync:在取得磁盤使用信息前,不要執行sync指令,此為預設值;

-P--portability:使用POSIX的輸出格式;

--sync:在取得磁盤使用信息前,先執行sync指令;

-t<文件系統類型>--type=<文件系統類型>:僅顯示指定文件系統類型的磁盤信息;

-T--print-type:顯示文件系統的類型;

-x<文件系統類型>--exclude-type=<文件系統類型>:不要顯示指定文件系統類型的磁盤信息;

 

3top

實時動態地查看系統的整體運行情況,是一個綜合了多方信息監測系統性能和運行信息的實用工具。通過top命令所提供的互動式界面,用熱鍵可以管理。

選項

-b:以批處理模式操作;

-c:顯示完整的治命令;

-d:屏幕刷新間隔時間;

-I:忽略失效過程;

-s:保密模式;

-S:累積模式;

-i<時間>:設置間隔時間;

-u<用戶名>:指定用戶名;

-p<進程號>:指定進程;

-n<次數>:循環顯示的次數。

交互命令

1:顯示具體cpu的狀態;

"Shift"+">""shift"+"<":修改進程信息的排序方式;

h:顯示幫助畫面,給出一些簡短的命令總結說明;

k:終止一個進程;

i:忽略閑置和僵死進程,這是一個開關式命令;

q:退出程序;

r:重新安排一個進程的優先級別;

S:切換到累計模式;

s:改變兩次刷新之間的延遲時間(單位為s),如果有小數,就換算成ms。輸入0值則系統將不斷刷新,默認值是5s

f或者F:從當前顯示中添加或者刪除項目;

o或者O:改變顯示項目的順序;

l:切換顯示平均負載和啟動時間信息;

m:切換顯示內存信息;

t:切換顯示進程和CPU狀態信息;

c:切換顯示命令名稱和完整命令行;

M:根據駐留內存大小進行排序;

P:根據CPU使用百分比大小進行排序;

T:根據時間/累計時間進行排序;

w:將當前設置寫入~/.toprc文件中。

top中一些字段的含義

第一行:

* 當前的時間

* 系統累積以及運行的時間

* 當前登入用戶的數量

* 當前的系統負載

第二行:

* 進程總數

* 正常運行的進程數量

* 休眠的進程總數

* 停止的進程總數

* 僵死進程總數

zombie僵屍進程

僵屍進程:一個進程使用fork創建子進程,如果子進程退出,而父進程並沒有調用waitwaitpid獲取子進程的狀態信息,那么子進程的進程描述符仍然保存在系統中。這種進程稱之為僵死進程。在每個進程退出的時候,內核釋放該進程所有的資源,包括打開的文件,占用的內存等。 但是仍然為其保留一定的信息(包括進程號the process ID,退出狀態the termination status of the process,運行時間the amount of CPU time taken by the process)。直到父進程通過wait / waitpid來取時才釋放。 但這樣就導致了問題,如果進程不調用wait / waitpid的話, 那么保留的那段信息就不會釋放,其進程號就會一直被占用,但是系統所能使用的進程號是有限的,如果大量的產生僵死進程,將因為沒有可用的進程號而導致系統不能產生新的進程. 此即為僵屍進程的危害,應當避免。

從系統角度來說,處理僵屍進程有兩種方法:

1 找到僵死進程的父進程,kill掉父進程,那么僵死進程將變為孤兒進程,孤兒進程在系統中由init進程接管,init進程將回收僵死進程的資源

2 reboot系統,因為僵死進程是不可以被kill

第三行:

%Cpu(s): 10.6 us, 1.4 sy, 0.0 ni, 87.7 id, 0.0 wa, 0.0 hi, 0.3 si, 0.0 st

* us用戶進程占用cpu資源的百分比

* sy內核態進程占cpu資源的百分比 (對於硬件的控制,內核來控制

* ni用戶進程空間內改變過優先級的進程占cpu資源的百分比

* id空閑cpu的百分比

* wa 等待輸入輸出(io)的進程占c資源的百分比 (從硬盤加載到內存)

* hi 硬中斷(Hardware IRQ)占用cpu的百分比

* si軟中斷(Software Interrupts)占用cpu的百分比

* st 虛擬機占用cpu的百分比

進程信息:

PRPriority 進程的優先級

NINice Value.優先級的值,負數表示優先級很高,正數表示優先級比較低。

VIRTvirtual memory usage 虛擬內存,虛擬內存=物理內存+swap

1、進程"需要的"虛擬內存大小,包括進程使用的庫、代碼、數據等

2、假如進程申請100m的內存,但實際只使用了10m,那么它會增長100m,而不是實際的使用量

RESresident memory usage 常駐內存

1、進程當前使用的內存大小,但不包括swap out

2、包含其他進程的共享

3、如果申請100m的內存,實際使用10m,它只增長10m,與VIRT相反

4、關於庫占用內存的情況,它只統計加載的庫文件所占內存大小

SHRshared memory 共享內存

S — 進程狀態 D=不可中斷的睡眠狀態 R=運行 S=睡眠 T=跟蹤/停止 Z=僵屍進程

 

1、除了自身進程的共享內存,也包括其他進程的共享內存

2、雖然進程只使用了幾個共享庫的函數,但它包含了整個共享庫的大小

3、計算某個進程所占的物理內存大小公式:RES – SHR

4swap out后,它將會降下來

 

DATA

1、數據占用的內存。如果top沒有顯示,按f鍵可以顯示出來。

2、真正的該程序要求的數據空間,是真正在運行中要使用的。

早期操作系統不支持多任務

對於操作系統的多任務,通過cpu時間片來實現處理多任務,目前的cpu主頻率可達5.0GHz

 

4uptime

打印系統總共運行了多長時間和系統的平均負載。uptime命令可以顯示的信息顯示依次為:現在時間、系統已經運行了多長時間、目前有多少登陸用戶、系統在過去的1分鍾、5分鍾和15分鍾內的平均負載,系統平均負載是指在特定時間間隔內運行隊列中的平均進程數。

[root@zabbix ~]# uptime

17:48:22 up 2:28, 2 users, load average: 0.00, 0.06, 0.07

負載越高,系統越卡,負載值盡量不要超過cpu核數的兩倍以上

 

5lscpu

顯示cpu的相關信息,也可以通過cat /proc/cpuinfo查看詳細信息

lscpusysfs/proc/cpuinfo收集cpu體系結構信息,命令的輸出比較易讀

命令輸出的信息包含cpu數量,線程,核數,套接字和Nom-Uniform Memeor Access(NUMA),緩存等

顯示格式:

  Architecture: #架構

  CPU(s): #邏輯cpu顆數

  Thread(s) per core: #每個核心線程

  Core(s) per socket: #每個cpu插槽核數/每顆物理cpu核數

  CPU socket(s): #cpu插槽數

  Vendor ID: #cpu廠商ID

  CPU family: #cpu系列

  Model: #型號

  Stepping: #步進

  CPU MHz: #cpu主頻

  Virtualization: #cpu支持的虛擬化技術

  L1d cache: #一級緩存(google了下,這具體表示表示cpuL1數據緩存)

  L1i cache: #一級緩存(具體為L1指令緩存)

L2 cache: #二級緩存

 

6iftop

yum install iftop -y

iftop可以用來監控網卡的實時流量(可以指定網段)、反向解析IP、顯示端口信息等

6.1 iftop界面相關說明

界面上面顯示的是類似刻度尺的刻度范圍,為顯示流量圖形的長條作標尺用的。

中間的<= =>這兩個左右箭頭,表示的是流量的方向。

TX:發送流量

RX:接收流量

TOTAL:總流量

Cumm:運行iftop到目前時間的總流量

peak:流量峰值

rates:分別表示過去 2s 10s 40s 的平均流量

6.2 iftop相關參數

常用的參數

-i設定監測的網卡,如:# iftop -i eth1

-B bytes為單位顯示流量(默認是bits),如:# iftop -B

-n使host信息默認直接都顯示IP,如:# iftop -n

-N使端口信息默認直接都顯示端口號,如: # iftop -N

-F顯示特定網段的進出流量,如# iftop -F 10.10.1.0/24# iftop -F 10.10.1.0/255.255.255.0

-hdisplay this message),幫助,顯示參數信息

-p使用這個參數后,中間的列表顯示的本地主機信息,出現了本機以外的IP信息;

-b使流量圖形條默認就顯示;

-f這個暫時還不太會用,過濾計算包用的;

-P使host信息及端口信息默認就都顯示;

-m設置界面最上邊的刻度的最大值,刻度分五個大段顯示,例:# iftop -m 100M

進入iftop畫面后的一些操作命令(注意大小寫)

h切換是否顯示幫助;

n切換顯示本機的IP或主機名;

s切換是否顯示本機的host信息;

d切換是否顯示遠端目標主機的host信息;

t切換顯示格式為2/1/只顯示發送流量/只顯示接收流量;

N切換顯示端口號或端口服務名稱;

S切換是否顯示本機的端口信息;

D切換是否顯示遠端目標主機的端口信息;

p切換是否顯示端口信息;

P切換暫停/繼續顯示;

b切換是否顯示平均流量圖形條;

B切換計算2秒或10秒或40秒內的平均流量;

T切換是否顯示每個連接的總流量;

l打開屏幕過濾功能,輸入要過濾的字符,比如ip,按回車后,屏幕就只顯示這個IP相關的流量信息;

L切換顯示畫面上邊的刻度;刻度不同,流量圖形條會有變化;

j或按k可以向上或向下滾動屏幕顯示的連接記錄;

123可以根據右側顯示的三列流量數據進行排序;

<根據左邊的本機名或IP排序;

>根據遠端目標主機的主機名或IP排序;

o切換是否固定只顯示當前的連接;

f可以編輯過濾代碼,這是翻譯過來的說法,我還沒用過這個!

!可以使用shell命令,這個沒用過!沒搞明白啥命令在這好用呢!

q退出監控。

 

7iostat

iostat主要用於監控系統設備的IO負載情況,iostat首次運行時顯示自系統啟動開始的各項統計信息,之后運行iostat將顯示自上次運行該命令以后的統計信息。用戶可以通過指定統計的次數和時間來獲得所需的統計信息。

yum install sysstat -y

-c 僅顯示CPU統計信息.-d選項互斥.

-d 僅顯示磁盤統計信息.-c選項互斥.

-k K為單位顯示每秒的磁盤請求數,默認單位塊.

-p device | ALL

-x選項互斥,用於顯示塊設備及系統分區的統計信息.也可以在-p后指定一個設備名,:

# iostat -p hda

或顯示所有設備

# iostat -p ALL

-t 在輸出數據時,打印搜集數據的時間.

-V 打印版本號和幫助信息.

-x 輸出擴展信息

第一部分包含了CPU報告

%user : 顯示了在執行用戶(應用)層時的CPU利用率

%nice : 顯示了在以nice優先級運行用戶層的CPU利用率

%system : 顯示了在執行系統(內核)層時的CPU利用率

%iowait : 顯示了CPUI/O請求掛起時空閑時間的百分比

%steal : 顯示了當hypervisor正服務於另外一個虛擬處理器時無意識地等待虛擬CPU所占有的時間百分比。

%idle : 顯示了CPUI/O沒有掛起請求時空閑時間的百分比

第二部分包含了設備利用率報告

Device : 列出的/dev 目錄下的設備/分區名稱

tps : 顯示每秒傳輸給設備的數量。更高的tps意味着處理器更忙。

KB_read/s : 顯示了每秒從設備上讀取的塊的數量(KB,MB)

KB_wrtn/s : 顯示了每秒寫入設備上塊的數量(KB,MB)

KB_read : 顯示所有已讀取的塊

KB_wrtn : 顯示所有已寫入的塊

 

8vmstat

顯示虛擬內存狀態("Viryual Memor Statics"),但是它可以報告關於進程、內存、I/O等系統整體運行狀態。

-a:顯示活動內頁;

-f:顯示啟動后創建的進程總數;

-m:顯示slab信息;

-n:頭信息僅顯示一次;

-s:以表格方式顯示事件計數器和內存狀態;

-d:報告磁盤狀態;

-p:顯示指定的硬盤分區狀態;

-S:輸出信息的單位。

字段說明:

Procs(進程)

r: 運行隊列中進程數量,這個值也可以判斷是否需要增加CPU。(長期大於1

b: 等待IO的進程數量。

Memory(內存)

swpd: 使用虛擬內存大小,如果swpd的值不為0,但是SISO的值長期為0,這種情況不會影響系統性能。

free: 空閑物理內存大小。

buff: 用作緩沖的內存大小。

cache: 用作緩存的內存大小,如果cache的值大的時候,說明cache處的文件數多,如果頻繁訪問到的文件都能被cache處,那么磁盤的讀IO bi會非常小。

Swap

si: 每秒從交換區寫到內存的大小,由磁盤調入內存。

so: 每秒寫入交換區的內存大小,由內存調入磁盤。

注意:內存夠用的時候,這2個值都是0,如果這2個值長期大於0時,系統性能會受到影響,磁盤IOCPU資源都會被消耗。有些朋友看到空閑內存(free)很少的或接近於0時,就認為內存不夠用了,不能光看這一點,還要結合siso,如果free很少,但是siso也很少(大多時候是0),那么不用擔心,系統性能這時不會受到影響的。

IO(現在的Linux版本塊的大小為1kb

bi: 每秒讀取的塊數

bo: 每秒寫入的塊數

注意:隨機磁盤讀寫的時候,這2個值越大(如超出1024k),能看到CPUIO等待的值也會越大。

system(系統)

in: 每秒中斷數,包括時鍾中斷。

cs: 每秒上下文切換數。

注意:上面2個值越大,會看到由內核消耗的CPU時間會越大。

CPU(以百分比表示)

us: 用戶進程執行時間百分比(user time)

us的值比較高時,說明用戶進程消耗的CPU時間多,但是如果長期超50%的使用,那么我們就該考慮優化程序算法或者進行加速。

sy: 內核系統進程執行時間百分比(system time)

sy的值高時,說明系統內核消耗的CPU資源多,這並不是良性表現,我們應該檢查原因。

wa: IO等待時間百分比

wa的值高時,說明IO等待比較嚴重,這可能由於磁盤大量作隨機訪問造成,也有可能磁盤出現瓶頸(塊操作)。

id: 空閑時間百分比

 

9dmidecode

獲取有關硬件方面的信息。dmidecode遵循SMBIOS/DMI標准,其輸出的信息包括BIOS、系統、主板、處理器、內存、緩存等等

參數:

-d(default:/dev/mem)從設備文件讀取信息,輸出內容與不加參數標准輸出相同。

-h:顯示幫助信息。

-s:只顯示指定DMI字符串的信息。(string)

-t:只顯示指定條目的信息。(type)

-u:顯示未解碼的原始條目內容。

--dump-bin file:將DMI數據轉儲到一個二進制文件中。

--from-dump FILE:從一個二進制文件讀取DMI數據。

dmidecode的輸出格式:

其中的前三行都稱為記錄頭(recode header),其中包括了:

1.recode id(Handle)DMI表中的記錄標識符,這是唯一的,比如上例中的Handle 0x0002.

2.DMI type id:記錄的類型,譬如說:BIOSMemory,上例是type 2,即"Base Board Information".

3.recode sizeDMI表中對應記錄的大小,上例為95 bytes。(不包括文本信息,所有實際輸出的內容比這個size要更大)。記錄頭之后就是記錄的值。

4.recoded values:記錄值可以是多行的,比如上例顯示了主板的制造商(Manufacturer)、Product NameVersion以及Serial Number

查看服務器型號:dmidecode | grep 'Product Name'

查看主板的序列號:dmidecode |grep 'Serial Number'

查看系統序列號:dmidecode -s system-serial-number

查看內存信息:dmidecode -t memory

查看OEM信息:dmidecode -t 11

取出內存信息Size

awk '/Size/{print $(NF-1)}' a.txt|sort -n|uniq -c|awk '{print $1"*"$2}'|xargs -n 100|tr ' ' '+'

 

10nethogs

按進程或程序實時統計網絡帶寬使用率

yum install nethogs -y

nethogs -d 5            #設置5秒鍾的刷新頻率

nethogs eth0            #監視設備(eth0)的網絡帶寬

nethogs eth0 eth1    #同時監視eth0eth1接口

交互命令

m : 修改單位

r : 按流量排序

s : 按發送流量排序

q : 退出命令提示符

 

 

文章內容來源於網絡


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM