logrotate command in Linux

来源:https://www.cnblogs.com/xiong97/archive/2022/07/20/16500392.html
-Advertisement-
Play Games

背景 在生產過程中,由於磁碟空間、保留周期等因素,會對系統、應用等日誌提出要求,要求系統日誌定期進行輪轉、壓縮和刪除,從而減少開銷,而系統自帶的logrotate 則是一個簡單又實用的小工具,下麵著重介紹一下,滿足日常需求。 語法 Usage: logrotate [OPTION...] <conf ...


背景

在生產過程中,由於磁碟空間、保留周期等因素,會對系統、應用等日誌提出要求,要求系統日誌定期進行輪轉、壓縮和刪除,從而減少開銷,而系統自帶的logrotate  則是一個簡單又實用的小工具,下麵著重介紹一下,滿足日常需求。

語法

Usage: logrotate [OPTION...] <configfile>  

常用參數 :

-f 非設定周期內強制運行

-d 調試,對日誌模擬進行操作

-v 可視化執行過程結果

其它參數不常用,詳情見下:

[root@test01 ~]# logrotate --help
Usage: logrotate [OPTION...] <configfile>
  -d, --debug               Don't do anything, just test (implies -v)
  -f, --force               Force file rotation
  -m, --mail=command        Command to send mail (instead of `/bin/mail')
  -s, --state=statefile     Path of state file
  -v, --verbose             Display messages during rotation
  -l, --log=STRING          Log file
  --version                 Display version information

Help options:
  -?, --help                Show this help message
  --usage                   Display brief usage message
[root@test01 ~]#

配置文件

logrotate  配置主要有兩個

  • 常規主配置文件地址/etc/logrotate.conf 不建議對其修改
  • 自定義配置文件 /etc/logrotate.d 這裡存放用戶自定義文件,通常建議將個人文件放到這裡
[root@test01 ~]# cd /etc/logrotate.d/
[root@test01 logrotate.d]# ll
total 16
-rw-r--r--. 1 root root  91 Aug  6  2019 bootlog
-rw-r--r--. 1 root root 224 Aug  6  2019 syslog
-rw-r--r--. 1 root root 100 Oct 31  2018 wpa_supplicant
-rw-r--r--. 1 root root 103 Aug  8  2019 yum
[root@test01 logrotate.d]#

為保證 /etc/logrotate.d 定義的文件能夠執行生效,需要確保 /etc/logrotate.conf 這句話沒有註釋,如有註釋,需手動取消:

# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

配置文件demo及參數

以下是我個人一個配置文件,可以直接拿來結合自己需求進行修改:

/var/log/linuxserver/linux.log {
        rotate 7
        size 200M
        daily
        compress
        delaycompress
        missingok
        notifempty
        noolddir
        copytruncate   
        dateext                  
        dateformat .%s
        create 660 root root
}

 文件格式主要是以日誌路徑和日誌切割參數組成:

第一行:指明 需要進行切割的日誌路徑,可以結合正則表達式,例如 /path/*.log ,指定路徑下所有的日誌

第二行:以{ } 包含logrotate 所需要的參數,demo包含了基本常用到的幾個參數,此外還有如下部分參數,參數含義如下:

# 日誌壓縮參數 
compress                 通過gzip 壓縮轉儲以後的日誌
delaycompress            和compress 一起使用時,轉儲的日誌文件到下一次轉儲時才壓縮
nodelaycompress          覆蓋 delaycompress 選項,轉儲同時壓縮
nocompress               不做gzip壓縮處理
# 對截斷後的日誌處理參數
copytruncate             用於還在打開中的日誌文件,把當前日誌備份並截斷;是先拷貝再清空的方式,拷貝和清空之間有一個時間差,可能會丟失部分日誌數據。
nocopytruncate           備份日誌文件不過不截斷
create mode owner group  輪轉時指定創建新文件的屬性,如create 0777 nobody nobody
nocreate                 不建立新的日誌文件
dateext                  使用當期日期作為命名格式
dateformat .%s           配合dateext使用,緊跟在下一行出現,定義文件切割後的文件名,必須配合dateext使用,只支持 %Y %m %d %s 這四個參數
# 基本參數
missingok                如果日誌丟失,不報錯繼續滾動下一個日誌
errors address           專儲時的錯誤信息發送到指定的Email 地址
ifempty                  即使日誌文件為空文件也做輪轉,這個是logrotate的預設選項。
notifempty               當日誌文件為空時,不進行輪轉
mail address             把轉儲的日誌文件發送到指定的E-mail 地址
nomail                   轉儲時不發送日誌文件
# 舊日誌存放參數
olddir directory         轉儲後的日誌文件放入指定的目錄,必須和當前日誌文件在同一個文件系統
noolddir                 轉儲後的日誌文件和當前日誌文件放在同一個目錄下
# logrotate 執行前後鉤子參數
sharedscripts            運行postrotate腳本,作用是在所有日誌都輪轉後統一執行一次腳本。如果沒有配置這個,那麼每個日誌輪轉後都會執行一次腳本
prerotate                在logrotate轉儲之前需要執行的指令,例如修改文件的屬性等動作;必須獨立成行
postrotate               在logrotate轉儲之後需要執行的指令,例如重新啟動 (kill -HUP) 某個服務!必須獨立成行
# 執行周期參數
daily                    指定轉儲周期為每天
weekly                   指定轉儲周期為每周
monthly                  指定轉儲周期為每月
# logrotate 觸發條件參數
rotate count             指定日誌文件刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份
size(或minsize) log-size 當日誌文件到達指定的大小M、G時才轉儲

執行觸發時間

logrotate 預設走的是crond 服務 ,執行語句腳本存放在/etc/cron.daily/ 目錄下,主要腳本:/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

預設觸發時間配置文件存在 /etc/anacrontab ,預設執行時間 每日3.45-22.45 時間段隨機執行一次。缺點是具體執行時間不容易掌握,通常不建議用戶對該文件進行修改,如果需要定期執行,建議用戶可以在vim /etc/crontabcrontab  -e 按照crond 格式設定執行時間,以便更好的分配腳本執行時間,避免機器資源集中使用,減少機器負載。


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

-Advertisement-
Play Games
更多相關文章
  • 前言 嗨嘍~大家好呀,這裡是魔王吶 在前一章:讓我們用python來採集數據看看找工作都要會什麼吧~ 我們講瞭如何採集zhaopin網站數據,現在~ 我們來把數據可視化,更好的查看在自己領域最需的技術是什麼~ 下麵,我們直接上代碼~ 代碼提供者:青燈教育-自游老師 代碼 import pandas ...
  • 1、文件Auto_update_data,需要處理的映射基礎數據 #定義需要導入的映射數據 #以字典進行定義 [公司類目id : 平臺類目id] #d = {key1 : value1, key2 : value2, key3 : value3 } ap_category_relation_data ...
  • Python3的列表推導式、字典推導式、集合推導式和元組推導式,以及相應習題 ...
  • 1 MySQL總體架構介紹 1.1 MySQL總體架構介紹 引言 MySQL是一個關係型資料庫 應用十分廣泛 在學習任何一門知識之前 對其架構有一個概括性的瞭解是非常重要的 比如索引、sql是在哪個地方執行的 流程是什麼樣的 今天我們就先來學習一下MySQL的總體架構 總的來說:MySQL架構是一個 ...
  • 天坑 遇到的問題:使用命令行執行命令:java EightSample,會報以下錯誤 錯誤: 找不到或無法載入主類 EightSample 運行環境 mac系統 IntelliJ IDEA編譯器 Java 1.8 首先保證了Java環境變數和版本都是沒問題的 然後保證已經執行了以下命令,生成了.cl ...
  • 背景 工作需要配置多個環境,用於 開發Development、預覽Staging、生產Production。 參考文獻: 微軟官方文檔-配置 開始 .NetCore對多環境有很好的支持,預設會讀取appsettings.{Environment}.json。 例如,appsettings.Produ ...
  • 一般情況下,在Word中添加文字水印僅支持添加一個文本字樣的水印,但在複雜的辦公環境中,由於對不同文檔的設計要求,需要在Word文檔中添加平鋪水印效果,即文檔中的水印文字以多行多列分佈的形式存在。本文將介紹如何來實現該水印效果的方法,下麵是詳細步驟及方法。 dll引用 通過 NuGet 引入dll( ...
  • 一:背景 寫這一篇的目的主要是因為.NET領域內幾本關於闡述GC方面的書,都是純理論,所以懂得人自然懂,不懂得人也沒法親自驗證,這一篇我就用 windbg + 源碼 讓大家眼見為實。 二:為什麼要引入後臺GC 1. 後臺GC到底解決了什麼問題 解決什麼問題得先說有什麼問題,我們知道 阻塞版GC 有一 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...