Linux logrotate 日誌轉儲功能配置

来源:https://www.cnblogs.com/heyongshen/archive/2022/10/20/16810222.html
-Advertisement-
Play Games

logrotate: logrotate 程式是一個日誌文件管理工具。用來把舊的日誌文件刪除,並創建新的日誌文件,稱為日誌轉儲或滾動。 作用: 可以根據日誌文件的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行 logrotate 相關文件: 計劃任務:/etc/cron.dai ...


logrotate:

  logrotate 程式是一個日誌文件管理工具。用來把舊的日誌文件刪除,並創建新的日誌文件,稱為日誌轉儲或滾動。

作用:
  可以根據日誌文件的大小,也可以根據其天數來轉儲,這個過程一般通過 cron 程式來執行

logrotate 相關文件:

  • 計劃任務:/etc/cron.daily/logrotate

  • 程式文件:/usr/sbin/logrotate

  • 配置文件: /etc/logrotate.conf

  • 日誌文件:/var/lib/logrotate/logrotate.status

說明:

  • logrotate程式是系統自帶的。

  • logrotate的實現是基於計劃任務的。程式本身被計劃任務調用

#每天執行一次logrotate,會調用/etc/logrotate.conf定義的日誌轉儲規則來對日誌進行操作
[root@LogServer ~]# vim /etc/cron.daily/logrotate
#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
    /usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit $EXITVALUE
#這個文件定義了日誌轉儲的規則

#這是一個全局性配置,沒有特殊約定的都按照這個規則執行
[root@LogServer ~]# vim /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly  #每周做一次日誌的轉儲

# keep 4 weeks worth of backlogs
rotate 4  #表示只保存最近的四個日誌文件

# create new (empty) log files after rotating old ones
create  #表示老日誌文件滾動以後,創建一個同名的新日誌文件

# use date as a suffix of the rotated file
dateext #舊的日誌文件會添加一個時間尾碼

# uncomment this if you want your log files compressed
#compress

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d  #存放指定服務的配置

# system-specific logs may be also be configured here.

例如:

#btmp日誌轉儲的配置
[root@LogServer logrotate.d]# cat btmp 
# no packages own btmp -- we'll rotate it here
/var/log/btmp { #/var/log/btmp表示對btm這個文件定義轉儲規則
    missingok #如果日誌不存在,不提示錯誤,繼續處理下一個
    monthly #表示一個月轉儲一次
    create 0600 root utmp  #生成新文件的許可權 所有者 所屬組
    rotate 1 #只保存最近的一個文件
}

範例: 設置nginx的日誌轉儲

cat /etc/logrotate.d/nginx 
/var/log/nginx/*.log {    #/var/log/nginx路徑下只要是log結尾的文件都進行轉儲 -- 表示針對誰進行規則配置
   daily                  #指定轉儲周期為每天
   rotate 100             #表示保留最近的100哥文件
   missingok              #如果日誌不存在,不提示錯誤,繼續處理下一個
   compress               #對轉儲的日誌文件加逆行壓縮
   delaycompress          #和compress一起使用時,轉儲的日誌文件到下一次轉儲時才壓縮。延遲壓縮
   notifempty             #not  if empty:如果日誌文件為空舊不進行轉儲
   create 644 ngnix nginx #創建的新文件 文件許可權-所有者-所屬組
   postrotate #
      if [ -f /app/nginx/logs/nginx.pid ]; then  #如果進程生成的這個pid文件存在
          kill -USR1 `cat /app/nginx/logs/nginx.pid` # 在轉儲以後需要執行的命令  發送一個信號重新載入nginx進程
      fi
   endscript               #postrotate和endscript中的內容為對日誌文件轉儲後的操作
}

範例:對指定日誌手動執行日誌轉儲

#生成測試日誌
[root@centos8 ~]#dd if=/dev/zero of=/var/log/test1.log bs=2M count=1

#創建日誌轉儲配置文件
[root@centos8 ~]#cat /etc/logrotate.d/test1
/var/log/test1.log {  #表示要對那個文件進行轉儲
   daily #每天轉儲一次
   rotate 5 #只保存最近的五個文件
   compress #對轉儲的日誌文件進行壓縮
   delaycompress #不立即壓縮,而是再下一次轉儲的時候再壓縮
   missingok #如果這個文件不存在,不提示錯誤
   size 1M #文件大小超過1M就進行轉儲
   notifempty #如果/var/log/test1.log為空就不進行轉儲
   create 640 bin nobody #新創建的/var/log/test1.log 文件許可權為640,所有者為bin,所屬組為nobody
   postrotate 
      echo `date +%F_%T` >> /var/log/test1.log #轉儲完成後,對新生成的/var/log/test1.log執行操作
   endscript
}

#手動執行日誌轉儲
[root@LogServer log]# logrotate /etc/logrotate.d/test1

#查看內容
[root@LogServer log]# cat test1.log
2022-10-20_15:54:26

觸發總配置文件:子配置文件裡面沒定義的就按照總配置文件的對應配置來進行轉儲。

配置參數:

配置參數 說明
compress 通過gzip壓縮轉儲以後的日誌
nocompress 不壓縮
copytruncate 用於還在打開中的日誌文件,把當前日誌備份並截斷
nocopytruncate 備份日誌文件但是不截斷
create mode owner group 轉儲文件,使用指定的許可權,所有者,所屬組創建新的日誌文件
nocreate 不建立新的日誌文件
delaycompress 和 compress 一起使用時,轉儲的日誌文件到下一次轉儲時才壓縮
nodelaycompress 覆蓋 delaycompress 選項,轉儲同時壓縮
errors address 專儲時的錯誤信息發送到指定的Email 地址
ifempty 即使是空文件也轉儲,此為預設選項
notifempty 如果是空文件的話,不轉儲
mail address 把轉儲的日誌文件發送到指定的E-mail 地址
nomail 轉儲時不發送日誌文件
olddir directory 轉儲後的日誌文件放入指定目錄,必須和當前日誌文件在同一個文件系統
noolddir 轉儲後的日誌文件和當前日誌文件放在同一個目錄下
prerotate/endscript 在轉儲以前需要執行的命令,這兩個關鍵字必須單獨成行
postrotate/endscript 在轉儲以後需要執行的命令,這兩個關鍵字必須單獨成行
daily 指定轉儲周期為每天
weekly 指定轉儲周期為每周
monthly 指定轉儲周期為每月
rotate count 指定日誌文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
tabooext [+] list 讓logrotate不轉儲指定擴展名的文件,預設的擴展名是:.rpm-orig,.rpmsave, v, 和 ~
size size 當日誌文件到達指定的大小時才轉儲,bytes(預設)及KB或MB
sharedscripts 預設,對每個轉儲日誌運行prerotate和postrotate腳本,日誌文件的絕對路徑作為第一個參數傳遞給腳本。 這意味著單個腳本可以針對與多個文件匹配的日誌文件條目多次運行(例如/ var / log / news /*.example)。如果指定此項sharedscripts,則無論有多少個日誌與通配符模式匹配,腳本都只會運行一次
nosharedscripts 針對每一個轉儲的日誌文件,都執行一次prerotate 和 postrotate腳本,此為預設值
missingok 如果日誌不存在,不提示錯誤,繼續處理下一個
nomissingok 如果日誌不存在,提示錯誤,此為預設值

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 年底找工作不容易,但是目前的工作做起來沒意思了。 這家公司是檢測設備的公司,裡面需要wpf開發,我就去投了試一下,隔了一周hr說線下麵試。 1面:HR 主要是問一下為啥想要離職,以後的發展方向有沒有確定。hr說他們公司不加班,加班沒工資但是可以調休 2面:技術 來之前在hr那做了一份題目,主要是C# ...
  • 一個美麗的邂逅 昨天心血來潮,想著用了很久的HangFire這個任務調度組件,卻從來沒有研究過其源碼,所以我就想著看一下Hangfire的源碼,然後當我看到Hangfire源碼中 AspNetShutdownDetector(Asp.Net服務停止檢測器)這個類的源碼的時候,看到其實現方式中,有兩個 ...
  • 1 獲取基本信息 1.1 查看系統版本 [root@surpass ~]# cat /etc/redhat-release CentOS Linux release 7.9.2009 (Core) 1.2 查看系統內核版本 [root@surpass ~]# uname -r 3.10.0-1160 ...
  • 常見的io監控工具包括iostat、iotop,這裡從工具的安裝、使用、優缺點進行分析,並給出目前缺少的監控工具 1 iostat 功能:用於報告CPU(中央處理器)統計信息和整個系統、適配器、tty設備、磁碟和CD-ROM的輸入/輸出統計信息;通過觀察設備處於活動狀態的時間(相對於其平均傳輸速率) ...
  • Ansible配置文件 一、ansible配置文件 1.配置ansible 可以通過修改 Ansible 配置文件中的設置來自定義 Ansible安裝的行為。 Ansible從控制節點上多個可能的位置之一選擇其配置文件。 使用/etc/ansible/ansible.cfg ansible軟體包提供 ...
  • 常見存儲分為三種類型: DAS:直連式存儲:Direct-Attached Storage,簡稱DAS SAN:存儲區域網路:Storage Area Network,簡稱SAN NAS:網路附加存儲:Network-Attached Storage,簡稱NAS DAS存儲: 指存儲設備直接連接到服 ...
  • VSD Viewer for Mac版是mac上一款非常強大的Visio繪圖文件閱讀器,它為打開和列印Visio文件提供了簡單的解決方案。可以顯示隱藏的圖層,查看對象的形狀數據,預覽超鏈接。還可以將Visio轉換為包含圖層,形狀數據和超鏈接的PDF文檔。 詳情:VSD Viewer for Mac( ...
  • 管理配置Ansible Ansible清單 定義清單 清單定義Ansible將要管理的一批主機。這些主機也可以分配到組中,以進行集中管理。組可以包含子組,主機也可以是多個組的成員。清單還可以設置應用到它所定義的主機和組的變數。 可以通過兩種方式定義主機清單。靜態主機清單可以通過文本文件定義。動態主機 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...