CentOS8平台nginx日志的定时切分
一,编写bash脚本:
[root@yjweb crontab]# vi split_nginx_logs.sh
代码:
#!/bin/bash # 备份nginx的日志 # 昨天的日期 file_date=$(date -d"1 day ago" +"%Y%m%d") echo ${file_date} # nginx log的路径 log_path_nginx=/data/logs/nginxlogs # ===================backup dir name======================== back_base=/data/logs/nginxlogsbackup date_year=$(date -d"1 day ago" +"%Y") date_month=$(date -d"1 day ago" +"%m") date_day=$(date -d"1 day ago" +"%d") back_path=${back_base}/${date_year}/${date_month}/${date_day} echo ${back_path} # ===================mkdir back_path======================== if [ -d ${back_path} ];then echo 目录已经存在,不能重复创建 else mkdir -p ${back_path} fi # =================== 备份nginx log ======================== cd ${log_path_nginx} for file in $(ls *log); do mv ${file} ${back_path}/${file_date}_${file} done # =================== 向nginx主进程发送USR1信号,重新打开日志文件 ======================== # =================== 避免继续向原文件中写入日志 ======================== kill -USR1 `ps axu | grep "nginx: master process" | grep -v grep | awk '{print $2}'`
说明:刘宏缔的架构森林是一个专注架构的博客,
网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/20/centos8linuxnginx-ri-zhi-de-ding-shi-qie-fen-centos801905/
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,创建保存备份日志的目录
[root@yjweb logs]# mkdir /data/logs/nginxlogsbackup [root@yjweb logs]# chmod 777 /data/logs/nginxlogsbackup
三,保存到定时任务:
[root@yjweb crontab]# chmod +x split_nginx_logs.sh [root@yjweb crontab]# crontab -e
内容:
[root@yjweb crontab]# crontab -l 0 0 * * * sh /data/web/crontab/split_nginx_logs.sh >> /data/logs/cronlogs/splitnginxlogs.log 2>&1
四,查看日志切分的效果:
[root@yjweb crontab]# ll /data/logs/nginxlogsbackup/2020/03/05/ total 92 -rw-r--r-- 1 root root 7601 Mar 6 13:33 20200305_error.log -rw-r--r-- 1 root root 6843 Mar 6 11:32 20200305_www.access_log -rw-r--r-- 1 root root 2490 Mar 6 11:32 20200305_www.error_log
五,查看本地centos的版本
[webop@yjweb ~]$ cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)