在我日常开发服务器维护的时候经常发现我们的服务器磁盘被站满了。
经过一顿排查发现多数发现是我们的日志没有处理好搞的问题。
这时候如果我们可以将nginx日志切割然后定时删除一下很老的日志就非常方便了。
说明本环境是centos6.5如果是linux 其他版本命令可能会有差异。
日志切割自动删除思路
使用linux的crontab定时计划去操作我们的日志就行
新建定时任务执行日志处理脚本文件
这个文件最好放到一个公共的目录,都用来存储我们的脚步文件
[root@localhost corn]# vim logclean.sh
输入脚本内容如下,可以根据自己情况改动
#输入脚本
#!/bin/bash
#设置日志文件存放目录
logs_path="/home/nginx/log/"
#设置pid文件
pid_path="/usr/local/nginx/logs/nginx.pid"
#设置nginx日志保存的天数
log_day=7
#重命名日志文件
mv ${logs_path}news.common.log ${logs_path}news.common_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}news.i21days.cn.log ${logs_path}news.i21days.cn_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}access.log ${logs_path}access_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}error.log ${logs_path}error_$(date -d "yesterday" +"%Y%m%d").log
mv ${logs_path}kaka.yueliaoba.net.log ${logs_path}kaka.yueliaoba.net_$(date -d "yesterday" +"%Y%m%d").log
#向nginx主进程发信号重新打开日志
kill -USR1 `cat ${pid_path}`
#删除当前目录下七天前的日志
find ${logs_path} -name "news.common_*" -type f -mtime +$log_day -exec rm -rf {} \;
find ${logs_path} -name "news.i21days.cn_*" -type f -mtime +$log_day -exec rm -rf {} \;
find ${logs_path} -name "access_*" -type f -mtime +$log_day -exec rm -rf {} \;
find ${logs_path} -name "error_*" -type f -mtime +$log_day -exec rm -rf {} \;
find ${logs_path} -name "kaka.yueliaoba.net_*" -type f -mtime +$log_day -exec rm -rf {} \;
保存退出,然后修改这个脚本的权限让他可以执行
chmod 777 logclean.sh
设置linux crontab任务
#进入 vi /etc/crontab 文件 增加计划任务
# 这里路径一定要写对,还有定时执行的时间
0 0 * * * root /usr/local/nginx/logclean/logclean.sh >> /home/cron.log>&1
#然后重新启动cron 参考一下命令
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置