欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

如何用腳本一鍵獲取和監控Linux系統信息和資源使用率?

錢艷冰2年前12瀏覽0評論

很高興回答您的問題我是林創云小編,如果我的回答對你有幫助歡迎給我評論留言或者點贊加個關注!

1、利用vmstat工具監控CPU詳細信息,然后基于/proc/stat計算CPU利用率進行監控,超過80報警并提取出占用cpu最高的前十進程。

vmstat是Linux系統監控工具,使用vmstat命令可以得到關于進程、內存、內存分頁、堵塞IO、traps及CPU活動的信息。

r:運行隊列中的進程數;b:等待IO的進程數。

swpd:已用虛擬內存大小(k);free:空閑內存大小;buff:已用緩沖大小;cache:已用緩存大小。

si:每秒從交換區寫入內存的大小(kb/s);so:每秒從內存寫入交換分區的大小。

bi:每秒讀取的塊數;bo每秒寫入的塊數。

in:每秒中斷數,包括時鐘中斷;cs:每秒上下文切換數。

us(usertime):用戶進程執行消耗cpu時間;sy(systemtime):系統進程執行消耗cpu時間;id:空閑時間(包括IO等待時間);wa:等待IO時間。

/proc/stat:

這個文件包含了所有CPU活動的信息,該文件中的所有值都是從系統啟動開始累計到當前時刻。可以利用其中信息計算cpu的利用率。

每行每個參數的意思為(以第一行為例,單位:jiffies,1jiffies=0.01秒):

user(62124):從系統啟動開始累計到當前時刻,用戶態的CPU時間,不包含nice值為負進程。

nice(11):從系統啟動開始累計到當前時刻。

system(47890):從系統啟動開始累計到當前時刻,nice值為負的進程所占用的CPU時間。

idle(8715270):從系統啟動開始累計到當前時刻,除硬盤IO等待時間以外其它等待時間。

iowait(84729):從系統啟動開始累計到當前時刻,硬盤IO等待時間。

irq(0):從系統啟動開始累計到當前時刻,硬中斷時間。

softirq(1483):從系統啟動開始累計到當前時刻,軟中斷時間。

CPU時間=user+nice+system+idle+iowait+irq+softirq。

CPU利用率=(idle2-idle1)/(cpu2-cpu1)*100。

psaux:

顯示其他用戶啟動的進程(a)

查看系統中屬于自己的進程(x)

啟動這個進程的用戶和啟動時間(u)

代碼如下:

#!/bin/bash

#

CPU_us=$(vmstat|awk'{print$13}'|sed-n'$p')

CPU_sy=$(vmstat|awk'{print$14}'|sed-n'$p')

CPU_id=$(vmstat|awk'{print$15}'|sed-n'$p')

CPU_wa=$(vmstat|awk'{print$16}'|sed-n'$p')

CPU_st=$(vmstat|awk'{print$17}'|sed-n'$p')

CPU1=`cat/proc/stat|grep'cpu'|awk'{print$2""$3""$4""$5""$6""$7""$8}'`

sleep5

CPU2=`cat/proc/stat|grep'cpu'|awk'{print$2""$3""$4""$5""$6""$7""$8}'`

IDLE1=`echo$CPU1|awk'{print$4}'`

IDLE2=`echo$CPU2|awk'{print$4}'`

CPU1_TOTAL=`echo$CPU1|awk'{print$1+$2+$3+$4+$5+$6+$7}'`

CPU2_TOTAL=`echo$CPU2|awk'{print$1+$2+$3+$4+$5+$6+$7}'`

IDLE=`echo"$IDLE2-$IDLE1"|bc`

CPU_TOTAL=`echo"$CPU2_TOTAL-$CPU1_TOTAL"|bc`

#echo-e"IDLE2:$IDLE2\nIDLE1:$IDLE1\nCPU2:$CPU2_TOTAL\nCPU1:$CPU1_TOTAL"

#echo-e"IDLE:$IDLE\nCPU:$CPU_TOTAL"

RATE=`echo"scale=4;($CPU_TOTAL-$IDLE)/$CPU_TOTAL*100"|bc|awk'{printf"%.2f",$1}'`

echo-e"us=$CPU_us\tsy=$CPU_sy\tid=$CPU_id\twa=$CPU_wa\tst=$CPU_st"

echo"CPU_RATE:${RATE}%"

CPU_RATE=`echo$RATE|cut-d.-f1`

#echo"CPU_RATE:$CPU_RATE"

if[$CPU_RATE-ge80]

thenecho"CPUWarn"

psaux|grep-vUSER|sort-rn-k3|head

fi

執行效果

2、利用free工具監控內存利用率,超過80報警并提取出占用內存最高的前十進程。

代碼如下:

#!/bin/bash

#

total=$(free-m|sed-n'2p'|awk'{print$2}')

used=$(free-m|sed-n'2p'|awk'{print$3}')

free=$(free-m|sed-n'2p'|awk'{print$4}')

shared=$(free-m|sed-n'2p'|awk'{print$5}')

buff=$(free-m|sed-n'2p'|awk'{print$6}')

cached=$(free-m|sed-n'2p'|awk'{print$7}')

rate=`echo"scale=2;$used/$total"|bc|awk-F.'{print$2}'`

echo-e"total\tused\tfree\tshared\tbuffer\tavailable"

echo-e"${total}M\t${used}M\t${free}M\t${shared}M\t${buff}M\t${cached}M\nrate:${rate}%"

if[$rate-ge80]

thenecho"MemoryWarn"

psaux|grep-vUSER|sort-rn-k4|head

fi

執行效果

3、利用df命令監控磁盤利用率,超過80報警。

df:顯示磁盤分區上的可使用的磁盤空間。

-h以更易讀的方式顯示;

-P使用POSIX的輸出格式。

#!/bin/bash

#

DEV=`df-hP|grep'^/dev/*'|cut-d''-f1|sort`

forIin$DEV

dodev=`df-Ph|grep$I|awk'{print$1}'`

size=`df-Ph|grep$I|awk'{print$2}'`

used=`df-Ph|grep$I|awk'{print$3}'`

free=`df-Ph|grep$I|awk'{print$4}'`

rate=`df-Ph|grep$I|awk'{print$5}'`

mount=`df-Ph|grep$I|awk'{print$6}'`

echo-e"$I:\tsize:$size\tused:$used\tfree:$free\trate:$rate\tmount:$mount"

F=`echo$rate|awk-F%'{print$1}'`

if[$F-ge80];then

echo"$mountWarn"

elseecho"It'sOK"

fi

done

執行效果

CPU物理信息

查看物理cpu個數:

cat/proc/cpuinfo|grep"physicalid"|uniq|wc-l

查看cpu核數:

cat/proc/cpuinfo|grep"cpucores"|uniq

查看邏輯cpu個數:

cat/proc/cpuinfo|grep"processor"|wc-l