利用shell指令碼監控linux中CPU、記憶體和磁碟利用率。(centos7)
這篇部落格中所寫的,在實際工作中並沒有什麼卵用,工作中並不會用到這種指令碼去監控。不過自己寫一遍,可以讓初學者對CPU、記憶體、磁碟等一些基礎知識和基礎命令更加了解。
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(user time):使用者程序執行消耗cpu時間;sy(system time):系統程序執行消耗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。
ps aux:
顯示其他使用者啟動的程序(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}'` sleep 5 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 -ge 80 ] then echo "CPU Warn" ps aux | grep -v USER | 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 -ge 80 ] then echo "Memory Warn" ps aux | grep -v USER | sort -rn -k4 | head fi
3、利用df命令監控磁碟利用率,超過80報警。
df :顯示磁碟分割槽上的可使用的磁碟空間。
-h 以更易讀的方式顯示;
-P 使用POSIX的輸出格式。
#!/bin/bash # DEV=`df -hP | grep '^/dev/*' | cut -d' ' -f1 | sort` for I in $DEV do dev=`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 -ge 80 ];then echo "$mount Warn" else echo "It's OK" fi done
CPU物理資訊
檢視物理cpu個數:
cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
檢視cpu核數:
cat /proc/cpuinfo | grep "cpu cores" | uniq
檢視邏輯cpu個數:
cat /proc/cpuinfo | grep "processor" | wc -l
相關推薦
利用shell指令碼監控linux中CPU、記憶體和磁碟利用率。(centos7)
這篇部落格中所寫的,在實際工作中並沒有什麼卵用,工作中並不會用到這種指令碼去監控。不過自己寫一遍,可以讓初學者對CPU、記憶體、磁碟等一些基礎知識和基礎命令更加了解。 1、利用vmstat工具監控CPU詳細資訊,然後基於/proc/stat計算CPU利用率進行監控,超過80報警並提取出佔用cpu最高的前十
Shell指令碼監控CPU、記憶體和硬碟利用率
轉:http://blog.51cto.com/lizhenliang/1610415 1、監控CPU利用率(通過vmstat工具) #!/bin/bash #==================================================== # Author: lizh
jmeter學習------監控linux的cpu、記憶體、網路等資源佔用曲線圖
需求: 1、瞭解系統執行的機器的資源佔用情況 2、使用jmeter監控機器上的cpu、記憶體、網路等資源佔用曲線圖 3、從資源佔用曲線圖中-預測系統併發量、資料處理量的能力 步驟: 1、這裡使用apache-jmeter-3.1版本 2、加入plugins外掛:
Linux用戶、組和權限管理(一)
linux用戶、組使用Linux是一個Multi-tasks(多任務)、 Multi-Users(多用戶)的系統每一個登陸者或使用者都有用戶標識、密碼(所謂3A) 所謂的3A: Authentication(驗證機制) Authorization(授權機制) Audition(審計)組的概
Ubuntu16下檢視CPU、記憶體和磁碟相關資訊
1.記憶體 檢視記憶體#free -m total used free shared buff/cache available Mem: 96685 986 94887
java 併發中 volitile、synchronized和lock的比較(一)
1、volitile和(synchronnized、lock) 首先比較volitile和synchronnized,volitile執行緒不安全,但是synchronized則是執行緒安全的。 volitile修飾的變數主要作用讓變數的改變立即寫
利用shell腳本監控linux中CPU利用率。
roc eight 等待 user 文件中 cpuinfo 參數 大小 printf 1、利用vmstat工具監控CPU信息。 vmstat 是 Linux系統監控工具,使用vmstat命令可以得到關於進程、內存、內存分頁、堵塞IO、traps及CPU活動的信息。 r:運
監控linux中CPU 記憶體 磁碟資料的shell指令碼(圖文)
# 伺服器CPU/MEM/DISK監控指令碼(server_moniter.sh) #------------------------------------------------------------------ # 對伺服器的CPU/MEM/DISK設定閾值,動態監控利用率,超過閾值傳送郵件
利用shell指令碼監控redis的使用記憶體
前些天搭建的redis叢集終於在生產環境使用了,為了系統的穩定,研究了下redis的監控報警。 雖然之前搭建了RedisLive,可以實時檢視redis的資訊,但是做不到實時的簡訊報警監控。 目前只針
java中遠端監控Linux主機CPU及記憶體程式碼實現
對於遠端監控Linux主機系統CPU,記憶體使用情況,以前也使用了top等命令,但是最後還是覺得使用vmstat比較好. 執行top命令獲得系統CPU使用情況有兩個缺點, 第一執行top命令,執行的shell語句相對複雜. 用top命令獲得CPU使用情況的shell語句 t
Linux學習筆記RHEL 7(十三)--Linux中su、su -和sudo的區別
su 切換到root使用者,但是並沒有轉到root使用者家目錄下,即沒有改變使用者的環境。 su - 切換到root使用者,並轉到root使用者的家目錄下,即改變到了root使用者的環境。 這個涉及到不同使用者下的環境變數的配置。 sudo 通過sudo,我們能把
Linux中CPU與記憶體效能監測
在系統維護的過程中,隨時可能有需要檢視 CPU 使用率記憶體使用情況的需要,尤其是涉及到JVM,程式調優的情況,並根據相應資訊分析系統狀況的需要。 top命令 top命令是Linux下常用的效能分析工
linux系統cpu、記憶體、磁碟IO異常查詢方式彙總
對linux系統中cpu、記憶體、磁碟IO異常定位的方式進行梳理總結如下: 1、先記錄下基本的cpu資訊查詢方式: # 總核數 = 物理CPU個數 X 每顆物理CPU的核數 # 總邏輯CPU數 = 物理CPU個數 X 每顆物理CPU的核數 X 超執行緒數 # 檢視物理CP
Linux中新增、修改和刪除使用者和使用者組
一、使用者:在建立使用者時,需要為新建使用者指定一使用者組,如果不指定其使用者所屬的工作組,自動會生成一個與使用者名稱同名的工作組。建立使用者user1的時候指定其所屬工作組users,例:useradd –g users user11、使用命令 useradd 建立使用者例
linux下檢視cpu、記憶體和硬碟大小
轉載至:http://blog.sina.com.cn/s/blog_535aa0930100ltz8.html 查cpu #dmesg |grep -i xeon CPU0: Intel(R) Xeon(R) CPU E5520 @ 2.27G
Linux按照CPU、記憶體、磁碟IO、網路效能監測(強烈推薦)
系統優化是一項複雜、繁瑣、長期的工作,優化前需要監測、採集、測試、評估,優化後也需要測試、採集、評估、監測,而且是一個長期和持續的過程,不 是說現在優化了,測試了,以後就可以一勞永逸了,也不是說書本上的優化就適合眼下正在執行的系統,不同的系統、不同的硬體、不同的應用優化的重
Linux中pushd、popd和dirs
1、dirs 1)功能不帶引數的dirs命令顯示當前目錄棧中的記錄2)語法(1)格式:dirs [-clpv] [+n] [-n](2)選項-c 刪除目錄棧中的所有記錄-l 以完整格式顯示-p 一個目錄一行的方式顯示-v 每行一個目錄來顯
Linux下檢視CPU、記憶體和硬碟型號及相關資訊命令
smartctl version 5.33 [i386-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen Home page is http://smartmontools.sourceforge.net/ === START OF INFORMATION
linux中必備常用支持庫的安裝(CentOS)
支持 rac pen jpeg nbsp linux中 div sta linux 在CentOS安裝軟件的時候,可能缺少一部分支持庫,而報錯。這裏首先安裝系統常用的支持庫。那麽在安裝的時候就會減少很多的錯誤的出現 yum install -y gcc gdb str
給出字串分別計算出字串中數字、大小寫字母的個數。(兩種方法 getBytes( ) charAt( ) )
public class LetterAndNumberCount { public static void main(String[] args) { Count("FJJgjsgfsd543632"); count1("SFsefgdg2354354fsdf"