使用Bash腳本和Logrotate實現Nginx日志切割

Nginx是一個廣泛使用的高性能Web服務器,它能夠處理大量的并發連接,但同時也會生成大量的日志文件。為了有效管理這些日志文件并確保系統的正常運行,我們需要定期對Nginx的日志文件進行切割和歸檔。本文將介紹如何使用Bash腳本和Logrotate來實現Nginx日志的切割。

Bash腳本實現

假設Nginx的訪問日志文件位于/var/log/nginx/access.log

#!/bin/bashLOG_FILE="/var/log/nginx/access.log"
ARCHIVE_DIR="/var/log/nginx/archive"# 判斷歸檔目錄是否存在,如果不存在則創建
if [ ! -d "$ARCHIVE_DIR" ]; thenmkdir -p $ARCHIVE_DIR
fi# 使用gzip壓縮日志文件并移動到歸檔目錄
DATE=$(date +"%Y%m%d%H%M%S")
mv $LOG_FILE "$ARCHIVE_DIR/access_$DATE.log"
gzip "$ARCHIVE_DIR/access_$DATE.log"# 重新打開日志文件,以便Nginx繼續寫入新的日志
kill -USR1 $(cat /var/run/nginx.pid)

以上腳本的功能包括:

  • 檢查歸檔目錄是否存在,如果不存在則創建。
  • 將當前的訪問日志文件移動到歸檔目錄,并使用gzip進行壓縮。
  • 向Nginx發送USR1信號,以便重新打開日志文件,使Nginx能夠繼續寫入新的日志。

Logrotate實現

Logrotate是一個Linux系統上用來管理日志文件的工具,它可以定期輪轉日志文件、壓縮舊的日志文件以及刪除過期的日志文件。Logrotate通過配置文件定義輪轉規則,并由系統的cron任務周期性地執行。

假設Nginx的有兩個訪問日志文件分為位于

  • /apps/openresty/nginx/logs/head/access.log
  • /apps/openresty/nginx/logs/domain/access.log。

在/etc/logrotate.d目錄下創建一個名為nginx的文件,并添加以下內容

/apps/openresty/nginx/logs/head/access.log
/apps/openresty/nginx/logs/domain/access.log
{daily                        # 每天切割missingok                    # 忽略錯誤rotate 7                    # 最多保留多少個存檔compress                     # 切割后且壓縮delaycompress                # 延遲壓縮動作在下一次切割notifempty                   # 日志為空就不切割create 640 qhdrsj qhdrsj     # 切割的文件權限sharedscripts                # 共享腳本,結果為空postrotate                   # 收尾動作,重新生成nginx日志if [ -f /apps/openresty/nginx/logs/domain/nginx.pid ]; thenkill -USR1 `cat /apps/openresty/nginx/logs/domain/nginx.pid`fiif [ -f /apps/openresty/nginx/logs/head/nginx.pid ]; thenkill -USR1 `cat /apps/openresty/nginx/logs/head/nginx.pid`fiendscript                    # 結束動作}

以上配置的含義如下:

  • daily:每天輪轉一次日志。
  • missingok:如果日志文件不存在,則不報錯。
  • rotate 7:保留最近的7個歸檔文件。
  • compress:使用gzip壓縮輪轉后的日志文件。
  • delaycompress:延遲壓縮,直到下一次輪轉時才壓縮上一次的日志文件。
  • notifempty:如果日志文件為空,則不輪轉。
  • create:設置新創建的日志文件的權限和屬主。
  • sharedscripts:在所有日志文件輪轉之后執行一次腳本。
  • postrotate和endscript:在輪轉后執行的內容。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/13024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/13024.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/13024.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每天Get一個小技巧:用DolphinScheduler實現隔幾天調度

轉載自tuoluzhe8521 這篇小短文將教會你如何使用Apache DolphinScheduler實現隔幾天調度,有此需求的小伙伴學起來! 1 場景分析 DolphinScheduler定時器模塊-定時調度時每3秒|每3分鐘|每3天這種定時,不能夠跨分鐘,跨小時&#x…

【C++】:string類的基本使用

目錄 引言一,string類對象的常見構造二,string類對象的容量操作三,string類對象的訪問及遍歷操作四,string類對象的修改操作五,string類非成員函數六,整形與字符串的轉換 引言 string 就是我們常說的"…

如何對SQL Server中的敏感數據進行加密解密?

為什么需要對敏感數據進行加密? 近幾年有不少關于個人數據泄露的新聞(個人數據通常包含如姓名、地址、身份證號碼、財務信息等),給事發公司和被泄露人都帶來了不小的影響。 許多國家和地區都出臺了個人數據保護的法律法規&#…

Unity Animation--動畫窗口指南(使用動畫視圖)

Unity Animation--動畫窗口指南(使用動畫視圖) 使用動畫視圖 window -> Animation 即可打開窗口 查看GameObject上的動畫 window -> Animation -> Animation 默認快捷鍵 Ctrl 6 動畫屬性列表 在下面的圖像中,“動畫”視圖&am…

思科模擬器--2.靜態路由和默認路由配置24.5.15

首先,創建三個路由器和兩個個人電腦。 接著,配置兩臺電腦的IP,子網掩碼和默認網關 對Router 0,進行以下命令: 對Router進行以下命令: 對Router2進行以下命令: 本實驗完成。 驗證:PC…

Vue3+ts(day06:路由)

學習源碼可以看我的個人前端學習筆記 (github.com):qdxzw/frontlearningNotes 覺得有幫助的同學,可以點心心支持一下哈(筆記是根據b站上學習的尚硅谷的前端視頻【張天禹老師】,記錄一下學習筆記,用于自己復盤,有需要學…

【ARMv8/v9 系統寄存器 5 -- ARMv8 Cache 控制寄存器 SCTRL_EL1 使用詳細介紹】

關于ARM Cache 詳細學習推薦專欄: 【ARM Cache 專欄】 【ARM ACE Bus 與 Cache 專欄】 文章目錄 ARMv8/v9 Cache 設置寄存器ARMv8 指令 Cache 使能函數測試代碼 ARMv8/v9 Cache 設置寄存器 關于寄存器SCTRL_EL1 的詳細介紹見文章:【ARMv8/v9 異常模型入…

純正英語新聞 5.15

seizing territory :奪取領土 battlefield:戰場 shrinking:縮小 paramedic:醫護人員 mercilessly destroy:無情地摧殘 blown up:炸毀 northern outskirts :北郊 terrified:害怕 shelling&#xff…

西南大學計算機考研,選學碩還是專碩?西南大學計算機考研考情分析!

西南大學(Southwest University)是教育部直屬,教育部、農業農村部、重慶市共建的重點綜合大學,是國家首批"雙一流"建設高校,"211工程"和"985工程優勢學科創新平臺"建設高校。現任黨委書…

【嵌入式大賽應用賽道】機械手臂

電機 進步電機:它的轉動是以確定的步數進行的,只要計算好脈沖數量和頻率,就可以準確預測和控制電機的轉動角度、速度以及停止的位置 伺服電機:將輸入的電信號(如電壓或電流指令)轉換成軸上的精確旋轉運動…

大模型算法(一):從Transformer到ViT再到LLaMA

單任務/單領域模型 深度學習最早的研究集中在針對單個領域或者單個任務設計相應的模型。 對于CV計算機視覺領域,最常用的模型是CNN卷積模型。其中針對計算機視覺中的不同具體任務例如分類任務,目標檢測任務,圖像分割任務,以CNN作…

【傳知代碼】VRT: 關于視頻修復的模型(論文復現)

前言:隨著數字媒體技術的普及,制作和傳播視頻內容變得日益普遍。但是,視頻中由于多種因素,例如傳輸、存儲和錄制設備等,經常出現質量上的問題,如圖像模糊、噪聲干擾和低清晰度等。這類問題對用戶的體驗和觀…

hive動態分區

hive動態分區概念:允許插入數據到分區表時,根據插入的數據內容自動創建相應的分區 1.啟用動態分區功能 hive.exec.dynamic.partitiontrue; 2.分區字段設置 在insert語句中, 動態分區的字段必須放在select語句的末尾,hive會根據這個字段的值來創建分區目錄 示例: --創建分區表…

幾個排序器的verilog及其資源占用、延時分析

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 前言 因為課題需要,調研了幾個快速排序方法,并手寫或者改進了若干待測試對象,包括記分板型冒泡排序(這個是別人的&#xff09…

樹莓派|I2C通信

什么是I2C通信 I2C(Inter-Integrated Circuit)是一種串行通信協議,用于在集成電路(IC)之間傳輸數據。它由飛利浦公司(現在的恩智浦半導體公司)在20世紀80年代開發,并且成為了廣泛應用于各種電子設備中的通…

Spring Security 6.x 系列【73】認證篇之同端互斥登錄

有道無術,術尚可求,有術無道,止于術。 本系列Spring Boot 版本 3.1.0 本系列Spring Security 版本 6.1.0 源碼地址:https://gitee.com/pearl-organization/study-spring-security-demo 文章目錄 1. 概述2. 實現方案3. 案例演示3.1 內存會話3.1.1 并發控制流程分析3.1.2 功…

【35分鐘掌握金融風控策略28】貸中模型體系策略應用

目錄 貸中模型體系策略應用 信用模型體系和模型在策略中的應用 反欺詐模型體系和模型在策略中的應用 運營模型體系和模型在策略中的應用 貸中模型體系策略應用 在貸前模型部分已經講過,貸前開發的很多模型是可以在貸中直接使用的。貸中與貸前的不同點在于&…

ubuntu升級python

添加Python官方PPA源 sudo add-apt-repository ppa:deadsnakes/ppa 執行會顯示各個版本ubuntu可以安裝哪些python版本 更新軟件包索引 sudo apt update 安裝需要版本Python sudo apt install python3.11 檢查Python版本: which python11 /usr/bin/python3.11 設置為系統默認Pyt…

自定義一個starter

在Spring Boot中&#xff0c;創建一個自定義starter可以簡化特定功能或組件的配置過程&#xff0c;讓其他項目能夠輕松地重用這些功能。 這里我們以自定義一個xxl-job的starter為例&#xff0c;介紹下如何簡化配置。 添加依賴 <dependencies><dependency><gro…

STK中的光照計算模型

本文簡要闡述STK中光照計算的模型。 在航天任務中&#xff0c;通常需要分析地面站、飛行器在一定時間內的光照情況&#xff0c;具體包括&#xff1a; 地面站處在光照區和陰影區的具體時間范圍&#xff1b;考慮地形遮擋后&#xff0c;地面站的光照區和陰影區的變化情況&#x…