Linux使用logrotate來切割日誌檔案

2021-09-20 23:29:43 字數 4060 閱讀 2477

1.執行原理

logrotate預設情況下是通過anacron呼叫的,它每天只會被呼叫一次,也就是說乙個日誌檔案預設不會多次被處理(除非-f強制呼叫或者檔案大小超過指定值)。大致呼叫流程如下:

1).anacron每天去呼叫/etc/cron.daily中的任務(包含logrotate);

2).anacron呼叫logrotate後進行日誌的處理工作;

3).如果logrotate被手工呼叫,或者配置檔案中有引用,後面的配置記錄會覆蓋前面相同選項的內容;

1

2

3

4

5

6

7

8

#!/bin/sh

/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf

exitvalue=$?

if [ $exitvalue != 0 ]; then

/usr/bin/logger -t logrotate "alert exited abnormally with [$exitvalue]"

fi

exit 0

可以看到入口配置檔案是/etc/logrotate.conf,依次執行/etc/logrotate.conf.d裡的配置檔案 如果發現配置的logrotate沒有執行,可以看下系統的crond服務有沒有開啟

logrotate命令詳解:

1

2

3

4

5

6

7

8

9

10

logrotate --help

用法:logrotate [-dv] [-f|--force] [-s|--state file] config_file+

什麼都不跟則顯示版本資訊和簡單的幫助資訊,如果處理過程**現異常則返回非0的$?;

--?,--help:  顯示幫助資訊;

-v, --verbose:顯示詳細資訊;

-d, --debug:開啟除錯模式並隱含開啟-v,不會對日誌和logrotate的state檔案產生操作;

-f, --force:忽略呼叫週期強制呼叫logrotate,方便測試;

-m, --mail <command>:告知logrotate傳送郵件的命令;

-s, --state <statefile>:多個logrotate執行時告知logrotate自己使用的state檔案(/var/lib/logrotate.status)

config_file+:表示可以使用多個配置檔案(預設為/etc/logrotate.conf)在後面,最好是在乙個配置檔案中進行引用(測試某條新的規則時可以單獨建立乙個配置檔案並用-f引數進行強行呼叫);

2.配置

如果有安裝nginx,可以參考nginx裡的配置例子

1

2

3

4

5

6

7

8

9

10

11

12

/var/log/nginx/*log

第一行定義的是日誌檔案的路徑,可以用*通配,一般可以定義成*.log來匹配所有日誌檔案。也可以指定多個檔案,用空格隔開,比如

1

2

3

/var/log/nginx/access.log /var/log/nginx/error.log

花括號裡面是日誌切割相關的引數,下面是常用的切割引數

compress 是否開啟壓縮,壓縮格式gzip

不開啟壓縮

compresscmd 自定義壓縮命令

compres***ty 壓縮檔案名字尾

compressoptions 壓縮選項

copy 複製乙份檔案

create 後面跟mode owner group,設定新日誌檔案的許可權

daily 按天分割

weekly 按周分割

monthly 按月分割

rotate 後面跟數字,表示需要保留的檔案歷史記錄,超過數量就會刪除,或者通過郵件傳送

size 後面跟檔案大小,比如100k、100m,超過這個大小後分割

missingok 忽略不存在的檔案,不報錯

notifempty 不分割空檔案

sharedscripts 配合postrotate、prerotate,讓他們只執行一次

postrotate/endscript 檔案分割完後,執行postrotate、endscript之間的命令

prerotate/endscript 檔案分割完前,執行prerotate、endscript之間的命令

下面看幾個例子

切割/var/log/httpd/error.log日誌檔案,超過100k後切割,保留最新的5個歷史記錄,超過5個的郵件傳送到[email protected],postrotate裡的的命令是為了讓httpd重新開啟日誌檔案。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/var/lib/mysql/mysqld.log

這是對mysql日誌的切割,每天乙份,忽略空檔案,保留最新3份,使用gzip壓縮

1

2

3

4

5

6

7

8

9

10

11

/home/wuyuan/log/*.log

3.測試

寫完配置檔案後可以手動執行下,來驗證是否可用。

1

logrotate -f /etc/logrotate.d/wuyuan

其中-f 表示強制執行

沒問題的話日誌就會被移到old目錄下,並帶上日期,之前的log檔案會被清空

qianghong000

Linux 使用技巧

1.使用虛擬控制台 登入後按alt f2鍵這時又可以看到 login 提示符,這個就是第二個虛擬控 制台.一般新安裝的linux有四個虛擬控制台,可以用alt f1 alt f4來訪問.虛擬 控制台最有用的時候是當乙個程式出錯鎖住輸入時可以切換到其他虛擬控制台登入 進入後殺掉這個出錯的程序.2.拷貝...

誰在使用Linux?

我們整天在說 linux 但是,究竟是哪些人在實際使用 linux 心裡卻不很清楚,這叫 無的放矢 在我國境內,對於 linux 的使用情況,更是 心中無數 可謂 隨便放矢 使用 linux 與windows 乙個樣,讓人也會 上癮 使用什麼樣的 linux 發行版,其使用習慣會形成一種特定的 亞文...

linux命令 使用

匹配多個 find name pdf o name txt 檢視被暫用的指定埠程序id 主要查詢tcp和udp協議 netstat tunp awk grep 8080 grep 0 9 awk awk f svn提交n多 先add svn st grep e m d a awk xargs svn...