我们在日常的生产环境中,日志文件的产生是必不可少的,由其像是nginx服务器这种高并发服务器更会产生大量的日志,那么每天的日志大小就会非常的大,对我们的管理造成很大影响。那么我们就需要将日志按照定期的时间对其进行分割,并对分割的日志备份,然后再产生新的日志,方便管理。这就是日志分割!
1.创建每天日志切割后日志存放目录
[root@server1 sbin]# cd /usr/local/nginx/logs/
[root@server1 logs]# pwd
/usr/local/nginx/logs
[root@server1 logs]# mkdir oldlogs
[root@server1 logs]# ls
access.log error.log nginx.pid nginx.pid.oldbin oldlogs
[root@server1 logs]#
2.编写日志切割的脚本
[root@server1 logs]# vim /usr/local/nginx/logs/backup.sh
[root@server1 logs]# vim /usr/local/nginx/logs/backup.sh
#!/bin/bash
LOG_PATH=/usr/local/nginx/logs/oldlogs ##切割后新日志的路径
CUR_LOG_PATH=/usr/local/nginx/logs ##nginx日志存放的路径
YESTERDAY=$(date +%F -d -1day) ##定义时间为昨天
mv $CUR_LOG_PATH/access.log $LOG_PATH/${YESTERDAY}_access.log ##将昨天的access日志移动到切割目录,并且重命名
mv $CUR_LOG_PATH/error.log $LOG_PATH/${YESTERDAY}_error.log ##将昨天的error日志移动到切割日志目录,并且重命名
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid) ##让nginx差生新的日志文件来存放新生成的日志
[root@server1 logs]# chmod +x backup.sh
3.制作定时任务,定时切割日志
[root@server1 logs]# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@server1 logs]# crontab -l
0 0 * * * /bin/bash /usr/local/nginx/logs/backup.sh ##每天的00:00在bash环境执行backup.sh脚本,即日志切割
就这样,我们的日志切割就做好了!