1,原因:
1),服务器硬盘容量太小,系统盘50G
2),一个测试服务器,多组在使用
3),系统开启了sql打印,再加上要测试的定时任务功能打印过多
4),没钱!!!
2,方案
shell脚本定时执行,脚本里查看硬盘当前使用比例,超过设置值,清理Tomcat日志文件
3,步骤
1),进入/root目录,编写定时脚本checkCapacity.sh
cd /root
vim checkCapacity.sh
2),checkCapacity.sh
#!/bin/bash
#这个脚本使用来查看磁盘大小
#时间
day=`date "+%Y-%m-%d"`
minute=`date "+%k:%M"`
echo "*************************************************************************" >> checkCapaLog.txt
echo "统计开始时间:$day $minute" >> checkCapaLog.txt
#/dev/vda1磁盘使用情况
disk_vda1=`df -Ph |grep /dev/vda1|awk '{print $5}'|cut -f 1 -d "%"`
#设置最大值
max_dev=80
if [ $disk_vda1 -ge $max_dev ]
then
echo "目前磁盘容量为${disk_vda1}% 大于等于 设置临界值${max_dev}%" >>checkCapaLog.txt
echo "正在清理'/data/project/p06/apache-tomcat-7.0.92/logs/'文件夹中90天前的文件" >>checkCapaLog.txt
find /data/project/p06/apache-tomcat-7.0.92/logs -type f -mtime +90 -name "*.*" -exec rm -rf {} \;
echo "正在清理/data/project/p06/apache-tomcat-7.0.92/logs/catalina.out" >>checkCapaLog.txt
echo -n "" > /data/project/p06/apache-tomcat-7.0.92/logs/catalina.out
echo "正在清理/usr/local/redis-cluster/redis.log" >>checkCapaLog.txt
echo -n "" > /usr/local/redis-cluster/redis.log
disk_clear=`df -Ph |grep /dev/vda1|awk '{print $5}'|cut -f 1 -d "%"`
echo "清理完毕-目前磁盘容量占用$disk_clear%" >>checkCapaLog.txt
else
echo "目前磁盘容量为${disk_vda1}% 未超出 设置临界值${max_dev}%,请安心使用" >>checkCapaLog.txt
fi
echo "结束本次统计:$day $minute" >> checkCapaLog.txt
echo "*************************************************************************" >> checkCapaLog.txt
#换行
echo -e "\n" >> checkCapaLog.txt
*其中* /dev/vda1是系统盘,可以通过df -h来查看
参数disk_vda1其实就是上图的70
3),定时任务
vim /etc/crontab
4),crontab
1 SHELL=/bin/bash
2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
3 MAILTO=root
4
5 # For details see man 4 crontabs
6
7 # Example of job definition:
8 # .---------------- minute (0 - 59)
9 # | .------------- hour (0 - 23)
10 # | | .---------- day of month (1 - 31)
11 # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
12 # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
13 # | | | | |
14 # * * * * * user-name command to be executed
15 # 分 时 天 月 星期 命令(用户 脚本)
15 * * */1 * * root /root/checkCapacity.sh
5),重启定时任务服务
/sbin/service crond restart
4,遗憾:
1),系统盘虽然是50G,但是数据盘倒是有500G,应该考虑将日志文件挂载在数据盘
2),在脚本中,直接将日志文件内容清空,应该到达警戒值,发送邮件提出预警!