nginx日誌定期分割

2021-09-28 11:09:11 字數 1305 閱讀 7536

專案已上線運營一段時間,今天登陸伺服器檢視服務的運營狀況,發現乙個nginx的日誌越滾越大,而且nginx自身定時分割日誌的功能,故查詢相關的資料,編寫乙個shell,交給系統定時呼叫該任務執行。

分割日誌的s**件內容如下:

#!/bin/bash

#此指令碼用於自動分割nginx的日誌,包括access.log和error.log

#每天00:00執行此指令碼 將前一天的access.log重新命名為access-***x-xx-xx.log格式,並重新開啟日誌檔案

#nginx日誌檔案所在目錄

log_path=/usr/local/nginx/logs/

#獲取昨天的日期

yesterday=$(date -d "yesterday"

+%y-%m-%d)

month=$(date -d "yesterday"

+%y-%m)if[

!-d "$access_logs"

]; then

mkdir "$access_logs"

fiif[!

-d "$error_logs"

]; then

mkdir "$error_logs"

fiif[!

-d "$access_logs/$"

]; then

mkdir "$access_logs/$"

fiif[!

-d "$error_logs/$"

]; then

mkdir "$error_logs/$"

fi#獲取pid檔案路徑

pid=/usr/local/nginx/logs/nginx.pid

#分割日誌

mv $nginx.access.log $access_logs/$

/$.log

mv $nginx.error.log $error_logs/$

/$.log

#向nginx主程序傳送usr1訊號,重新開啟日誌檔案

kill

-usr1 $(

cat/usr/local/nginx/logs/nginx.pid)

賦予檔案可執行許可權

chmod +x /usr/local/nginx/logs/cut_nginx_log.sh

配置crontab每天凌晨00:00定時執行這個指令碼

crontab -e

輸入以下內容

00 00 * * * /bin/bash /usr/local/nginx/logs/cut_nginx_log.sh

儲存並退出。

nginx日誌分割

以下這個指令碼實施的核心是 每天凌晨將日誌檔案壓縮並移動到相應的年份月份目錄下,然後重新生成日誌檔案,同時記錄日誌 bin bash logs path home wwwlog 日誌存放位置 year date y 年份 month date m 月份 day date y m d 日期 time ...

Nginx 日誌分割

usr bin bash 日誌檔案存放目錄 logs path var log nginx nginx程序pid nginx pid cat var run nginx.pid 日誌名稱 logs name date d yesterday y m d 改名 mv logs path access....

NGINX日誌分割

nginx日誌分割 nginx 日誌分割 主要用到的命令是 usr local nginx sbin nginx s reopen nginx s reopen 意思是重新生成日誌檔案。所以我們可以每天定時把當天的日誌問價mv 成帶日期的,然後再生成新的檔案 usr local nginx 是我的n...