一個快速檢測系統CPU負載的小程序

原理說明linux

在對服務器進行維護時,有時也遇到因爲系統 CPU(利用率)負載太高致使業務中斷的狀況。服務器上可能運行多個進程,查看單個進程的 CPU 都是正常的,可是整個系統的 CPU 負載多是異常的。經過腳本對系統 CPU 負載進行時時監控,能夠在異常時及時發送告警,便於維護人員及時處理,預防事故發生。下面的函數能夠檢測系統 CPU 使用狀況 。使用 vmstat 取 5 次系統 CPU 的 idle 值,取平均值,而後經過與 100 取差獲得當前 CPU 的實際佔用值。
vmstat(VirtualMeomoryStatistics,虛擬內存統計)是Linux中監控內存的經常使用工具,可對操做系統的虛擬內存、進程、CPU等的總體狀況進行監視。該命令能夠顯示關於系統各類資源之間相關性能的簡要信息,這裏我主要用它來看CPU的一個負載狀況。bash

[root@host ~]# cat cpuload.sh 
#!/bin/bash
#Author: Jaking
#Mail: Jaking1024@163.com
#Date:2018/7/11
#Function:This script is to get the CPU load. 

function GetSysCPU 
 {
   CpuIdle=`vmstat 1 5 |sed -n '3,$p' | awk '{x = x + $15} END {print x/5}' | awk -F. '{print $1}'` 
   CpuNum=`echo "100-$CpuIdle" | bc` 
   echo $CpuNum 
 }

cpu=`GetSysCPU` 

 echo "The system CPU is $cpu"

 if [ $cpu -gt 80 ] 
 then 
 { 
    echo "The usage of system CPU is larger than 80%"
 } 
 else 
 { 
    echo "The usage of system CPU is normal"
 } 
 fi
[root@host ~]# bash cpuload.sh 
The system CPU is 8
The usage of system CPU is normal

從上面的輸出可見:當前 Linux 服務器系統 CPU 利用率爲 8%,是正常的,沒有超過 80% 的告警限制。服務器

相關文章
相關標籤/搜索