日积月累下,日志文件会愈来愈大,日志文件太大严重影响服务器效率,需要定时对日志文件进行切割。
切割的方式有按月切割、按天切割、按小时切割,通常都是按天切割。
那么如何进行切割呢?
思路:nginx
思路知道了,能不能具体点,show me code
下面以天天凌晨00:00切割nginx的访问日志access_log为例,详细讲解切割步骤shell
#!/bin/bash // nginx的日志文件路径 logs_path="/data1/logs/" // 建立日志文件存放路径 mkdir -p ${logs_path}$(date -d "yesterday" + "%Y")/$(date -d "yesterday" + "%m")/ // 将日志文件以当天时间为名字进行重命名 mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m%d").log // 发送kill -USR1信号给Nginx的主进程号,让Nginx从新生成一个新的日志文件 kill -USR1 `cat /var/nginx/nginx.pid`
// 进入编辑crontab crontab -e // 输入配置 // div_nginx_log.sh脚本的路径要写绝对路径 00 00 * * * /bin/bash /root/div_nginx_log.sh
按上面两个步骤来,这样就大功告成了bash
若更改crontab配置后不起效果,从新加载cron:/etc/init.d/cron reload
若还不行就重启crontab服务:/etc/init.d/crond restart服务器