自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux 日志輪轉(zhuǎn)機制 logrotate 詳解(超詳細版)

系統(tǒng) Linux 系統(tǒng)運維
logrotate 是 Linux/Unix 系統(tǒng)中專門用于管理日志輪轉(zhuǎn)的工具。大部分 Linux 發(fā)行版(如 CentOS、Ubuntu、Rocky Linux)都預(yù)裝了 logrotate。

日志是排查故障的利劍,但是日志文件不斷增長,如果不及時管理,不僅占用大量磁盤空間,還可能導致系統(tǒng)異常甚至宕機。

本篇系統(tǒng)講解 Linux 下最常用的日志輪轉(zhuǎn)工具——logrotate。

一、什么是日志輪轉(zhuǎn)?

日志輪轉(zhuǎn),簡單來說,就是:

定期對日志文件進行歸檔、壓縮、備份,防止日志無限增長,占滿服務(wù)器磁盤。

日志輪轉(zhuǎn)通常包含以下操作:

  • 將舊日志文件重命名歸檔(比如加上時間戳)
  • 壓縮歷史日志以節(jié)省空間
  • 限制保留日志數(shù)量,超期日志自動刪除
  • 可在輪轉(zhuǎn)后執(zhí)行命令,如通知程序重新生成日志

為什么需要日志輪轉(zhuǎn)?

  • 避免磁盤空間爆滿
  • 加快日志檢索速度
  • 便于歸檔和審計

一句話總結(jié):日志輪轉(zhuǎn),是服務(wù)器自我保護的一種能力。

二、什么是 logrotate?

logrotate 是 Linux/Unix 系統(tǒng)中專門用于管理日志輪轉(zhuǎn)的工具。

它具有以下特點:

  • 支持定時自動輪轉(zhuǎn)
  • 可針對不同日志文件制定不同策略
  • 支持壓縮、刪除、郵件發(fā)送等操作
  • 可結(jié)合自定義腳本執(zhí)行復(fù)雜操作

大部分 Linux 發(fā)行版(如 CentOS、Ubuntu、Rocky Linux)都預(yù)裝了 logrotate。系統(tǒng)日志、Nginx、MySQL、Tomcat 等日志輪轉(zhuǎn)大多基于它實現(xiàn)。

三、logrotate 安裝與基本使用

檢查是否安裝:在終端執(zhí)行

logrotate --version

如果未安裝,根據(jù)你的系統(tǒng)安裝:

  • RHEL / CentOS / Rocky Linux:
dnf install -y logrotate
  • Ubuntu / Debian:
sudo apt install -y logrotate

四、logrotate 配置文件詳解

logrotate 配置非常靈活,分為兩類:

1. 全局配置文件

/etc/logrotate.conf文件設(shè)置服務(wù)器的統(tǒng)一默認規(guī)則,適用于大多數(shù)普通日志。

推薦的全局配置:

# 全局輪轉(zhuǎn)周期
weekly                     # 每周輪轉(zhuǎn)一次
rotate 4                   # 保留最近4次的歸檔
create                     # 每次輪轉(zhuǎn)后新建日志
compress                   # 歸檔文件 gzip 壓縮
delaycompress              # 延遲一輪再壓縮
missingok                  # 日志丟失不報錯
notifempty                 # 日志為空不輪轉(zhuǎn)
dateext                    # 使用日期作為后綴,如 .log-20250426.gz

# 包含單獨服務(wù)配置
include /etc/logrotate.d

2. 子配置文件

子配置文件/etc/logrotate.d/*針對每個應(yīng)用(如 nginx、mysql、docker)單獨定制。

Nginx配置示例:/etc/logrotate.d/nginx:

/var/log/nginx/*.log {
    daily
    missingok
    rotate 14
    compress
    delaycompress
    notifempty
    create 0640 nginx adm
    sharedscripts
    postrotate
        [ -s /run/nginx.pid ] && kill -USR1 $(cat /run/nginx.pid)
    endscript
}

MySQL配置示例:

/var/log/mysql/*.log {
    weekly
    rotate 8
    missingok
    compress
    notifempty
    create 640 mysql mysql
    sharedscripts
    postrotate
        /usr/bin/mysqladmin --defaults-file=/etc/mysql/debian.cnf flush-logs
    endscript
}

配置參數(shù)詳解:

指令

說明

daily

/weekly/monthly

每天/每周/每月輪轉(zhuǎn)

rotate N

保留 N 個輪轉(zhuǎn)文件

compress

使用 gzip 壓縮

delaycompress

延遲到下次輪轉(zhuǎn)才壓縮

missingok

如果日志不存在,不報錯

notifempty

如果日志為空,不輪轉(zhuǎn)

create MODE OWNER GROUP

創(chuàng)建新日志文件并設(shè)置權(quán)限

postrotate endscript

輪轉(zhuǎn)完成后執(zhí)行腳本,如重載服務(wù)

【注意】子配置文件默認會繼承全局配置,但可以覆蓋!

五、logrotate 工作原理

logrotate 通過定時任務(wù)(cron)每天自動執(zhí)行,流程如下:

(1) 定時觸發(fā):由 /etc/cron.daily/logrotate 腳本調(diào)度

(2) 加載配置:讀取 /etc/logrotate.conf 和 /etc/logrotate.d/*

(3) 檢查日志文件:

  • 是否滿足輪轉(zhuǎn)條件(時間、大?。?/li>
  • 文件是否存在、是否為空

(4) 執(zhí)行輪轉(zhuǎn)動作:

  • 重命名舊日志(加時間后綴)
  • 壓縮歸檔
  • 創(chuàng)建新的日志文件
  • 刪除超期的舊日志

(5) 執(zhí)行鉤子腳本(postrotate)

如果一切正常,輪轉(zhuǎn)過程對應(yīng)用程序是透明的。

六、手動測試與故障排查

有時候需要手動測試 logrotate 是否配置正確,方法如下:

1. 手動測試單個配置文件

sudo logrotate -f /etc/logrotate.d/nginx

2. 帶詳細日志模式

sudo logrotate -vf /etc/logrotate.d/nginx
  • -f 強制輪轉(zhuǎn)
  • -v 顯示詳細執(zhí)行過程

常見錯誤排查:

  • 配置路徑錯誤
  • 權(quán)限不足,無法新建日志文件
  • postrotate腳本出錯,導致服務(wù)無法重新打開日志

查看系統(tǒng)日志 /var/log/messages 可以幫助進一步排查。

責任編輯:趙寧寧 來源: 運維李哥不背鍋
相關(guān)推薦

2021-10-22 14:23:02

logrotateLinux 命令Linux

2020-05-22 15:45:30

Linuxlogrotate神器

2021-08-16 11:59:32

Linuxlogrotate日志文件

2011-01-11 11:32:20

Linuxlogrotate配置

2010-01-05 16:56:28

2021-06-01 08:00:43

KubernetesCentOS版集群

2017-12-06 10:15:27

跳轉(zhuǎn)機制Chrome

2021-10-08 20:30:12

ZooKeeper選舉機制

2009-12-08 12:10:30

2020-02-27 14:58:03

LinuxBash編程命令

2022-07-29 11:39:31

?WindowLinux雙系統(tǒng)

2009-10-13 09:22:01

Linux發(fā)行版

2017-08-24 11:54:43

Linux日志定時輪循機制

2009-12-17 11:00:47

Linux內(nèi)存管理

2012-05-11 14:10:08

linux桌面系統(tǒng)

2019-12-19 08:56:21

MybatisSQL執(zhí)行器

2019-09-11 11:38:30

MySQLInnoDB數(shù)據(jù)庫

2010-08-06 12:29:17

Linux NFS服務(wù)

2009-07-15 09:15:26

2023-10-09 07:57:14

JavaJCF
點贊
收藏

51CTO技術(shù)棧公眾號