CPU 로드 모니터링 스크립트 코드

2569 단어
 
  
#!/bin/bash
load=`uptime`
shijian=`date +%Y-%m-%d-%T`
file=cpustatus.txt
touch $file
all=`cat $file |wc -l`
printf "$load $shijian
" >> $file

if [[ $all > 60 ]] ; then
starttime=`cat $file |awk '{print $13}'|sort -r|tail -1`
stoptime=`cat $file |awk '{print $13}'|sort -n|tail -1`
loadavg=`cat $file |awk '{avg1+=$10;avg2+=$11;avg3+=$12}END{print avg1/NR,avg2/NR,avg3/NR}'`
high=`cat $file |awk '{print $10}'|sort -n|tail -1`
low=`cat $file |awk '{print $10}'|sort -r|tail -1`
printf "$starttime
load average $loadavg
high $high
low $low
$stoptime

" > j
#printf "load average $startus
" >>j
#mv $f $f.$b
fi


Crontab과 함께 사용하면 더욱 좋습니다.
다음은 다른 사람이 쓴 것이니 공유해 주십시오
 
  
#!/bin/bash 
# IP  
IP=`ifconfig eth0 | grep "inet addr" | cut -f 2 -d ":" | cut -f 1 -d " "` 
# CPU  
cpu_num=`grep -c 'model name' /proc/cpuinfo` 
count_uptime=`uptime |wc -w` 
# 15  
load_15=`uptime | awk '{print $'$count_uptime'}'` 
# 15 , 1.0 0 
average_load=`echo "scale=2;a=$load_15/$cpu_num;if(length(a)==scale(a)) print 0;print a" | bc` 
#  
average_int=`echo $average_load | cut -f 1 -d "."` 
# shell (0-100 ) 
warn_input=$1 
if [[ ! $warn_input =~ ^[0-100]+$ ]] 
then 
    exit 0 
else 
    if [[ "$warn_input" -lt 0 || "$warn_input" -gt 100 ]] 
    then 
        exit 0 
    else 
        load_warn=$(($warn_input/100)) 
    fi 
fi 
if [ $average_int -gt 0  ] 
then 
    echo "$IP 15 $average_load, 1.0, !!!$(date +'%Y-%m-%d %H:%M:%S')" 
else 
    load_now=`expr $average_load \> $load_warn` 
    if [ $load_now -eq 1 ] 
    then 
        echo "$IP 15 $average_load, 0.7, !!!$(date +'%Y-%m-%d %H:%M:%S')" 
    else 
        echo "$IP 15 $average_load,cpu $cpu_num, 15 $load_15 $(date +'%Y-%m-%d %H:%M:%S')" 
    fi 
fi

좋은 웹페이지 즐겨찾기