现学现卖。如果你购买的是一个VPS,并且遇到一个很不怎么样的奸商的话,他会告诉你你的CPU和负载老是超标,自己很奇怪嘛,监控宝,TOP里显示都是正常的,不过他就是说他们的面板是这样显示的。没办法,做个脚本,让服务器自动检测,拿个有力的证据跟他辩解吧!

首先,登陆SSH,输入命令

crontab -e

像编辑文档一样,按I后输入以下内容

*/5 * * * * sh /root/moni_system.sh >> moni_system.log

这里是说,每5分钟执行一次moni_system.sh,root是文件的目录,并且自动生成moni_system.log
输入完毕后,结束,保存这个文件。接下来编辑moni_system.sh。(文件目录你自己可以根据需要修改,我的是root下syslog).

cd /root vi moni_system.sh

按I进入编辑,输入内容

#!/bin/bash ######################################################################## #这个脚本可以自己检测CPU和CPU负载,并且已5分钟一次检测并且保存记录。 #脚本制作:风之翼灵 #如果你有问题,你可以进入 www.fungj.com 询问 ######################################################################## cd /root #make the local language is chinese #export LANG=zh_CN curdate=`date +%H` logdir=/root/syslog logcpuuse=$logdir/cpuuse.log logcpuload=$logdir/cpuload.log ##################################### #统计cpu的使用信息 ############################### if [ -f $logcpuuse ] then #echo "logfile is exist !" top -b -n 1 >> $logcpuuse else #touch $logfile top -b -n 1 >> $logcpuuse fi ##################################### #统计cpu的负载信息 ############################### if [ -f $logcpuload ] then #echo "logfile is exist !" uptime >> $logcpuload else #touch $logfile date > $logcpuload uptime >> $logcpuload fi

完成后,保存退出文件。自此这个脚本就会按照5分钟一次来记录相关的数据在root/syslog下了。
cpuload.log这个就是记录负载的文件。cpuuse.log这个就是记录CPU的文件
cpuload.log的内容就是uptime后的结果

Thu May 6 06:30:02 PDT 2010 06:30:02 up 2 days, 2:19, 0 users, load average: 1.97, 4.47, 4.88

记录都在这2个文件里,数据都是挨个在一起。

这里需要提醒下,我这个脚本不会自动删除老的数据,所以一定要定期删除下记录,不然你的硬盘就会在某天自己满了。另外检查好你需要的目录权限,不然日志文件写入不了。

最后修改:2015 年 11 月 06 日
如果觉得我的文章对你有用,请随意赞赏