一台伺服器如果記憶體使用量過多可能導致網站開啟很慢,下面我分享一下在linux中利用shell命令實現即時監控你伺服器記憶體使用量狀態並給提醒
為了更方便的知道伺服器上記憶體使用量情況,並根據記憶體使用量大小來重啟服務,這裡我只整了故障警示,如果想要自動重啟服務的話,就要大家自己去修改了.
指令碼內容:
寫出來了,不太好看, 也不太會用awk, 不太會用awk的格式輸出所以用了一長串的字元,高手們來改進
代碼如下 |
複製代碼 |
[zz ~/my_scripts]$ cat awk_monitor { OFS="t" if ( $9 >= 5.0 ) if ( $10 >=3.0 ) print $1, $2, $3, $4, $5,$6,$7,$8,$9, $10, $11, $12 #這裡我覺得可以改進 fi } [zz ~/my_scripts]$ cat monitor_processes #!/bin/bash
top -b -n 1 |sed -n '8,$'p > top.log print "Please notice CPU and memory usage:n" >> top_re.log echo >> top_re.log print "PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND" >> top_re.log # 這裡我也覺得可以改進 gawk -f awk_monitor < top.log >> top_re.log mail -s "system monitor" zl@shili001 < top_re.log |
後來網上找到一個不錯的代碼給大家分享一下。
vi check_mem.sh
代碼如下 |
複製代碼 |
#!/bin/bash IP=`ifconfig | grep 'inet ' | grep -v '127.0.0.1' | awk -F ' ' '{print $2}'| awk -F':' '{print $2}'| head -n 1` MAX_mem=95 MAX_swap=20 memory=`free -m|grep Mem|awk '{print $3}'` Men=`free | awk '/Mem/ {print int($3/$2*100)}'` Mem=`free -m | awk '/-/ {print $3}'` SWAP=`free | awk '/Swap/ {print int($3/$2*100)}'` if [ $Men -gt $MAX_mem -o $SWAP -gt $MAX_swap ];then echo "Men Warning,memory: $memory ,Mem: $Mem" | mutt -s "$IP Men Warning " rocdk@163.com fi |
儲存後加到crontab裡
代碼如下 |
複製代碼 |
chmod +x /root/soft_shell/check_mem.sh */3 * * * * /bin/sh /root/soft_shell/check_mem.sh |