天天看點

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://www.cnblogs.com/architectforest

         對應的源碼可以通路這裡擷取: https://github.com/liuhongdi/

 說明:作者:劉宏締 郵箱: [email protected]

二,建立儲存備份日志的目錄

[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)       

繼續閱讀