日誌管理工具之logrotate

2022-06-23 04:57:14 字數 4411 閱讀 7452

logrotate配置和測試

logrotate軟體是乙個日誌管理工具,用於非分隔日誌,刪除舊的日誌檔案,並建立新的日誌檔案,起到「轉儲作用」,可以為系統節省磁碟空間。logrotate是基於crontab執行的,其指令碼是/etc/cron.daily/logtotate,日誌輪轉是系統自發完成的,實際執行時,logrotate會呼叫配置檔案/etc/logrotate.conf。可以在/etc/logrotate.d目錄裡放置自定義好的配置檔案,用來覆蓋logrotate.conf的預設值。

/etc/logrotate.conf     主配置檔案

/etc/logrotate.d/       該目錄裡的所有檔案都會自動被讀入到logrotate.conf檔案中

compress                     通過gzip 壓縮轉儲以後的日誌

nocompress                   不做gzip壓縮處理

copytruncate                  用於還在開啟中的日誌檔案,把當前日誌備份並截斷;是先拷貝再清空的方式,拷貝和清空之間有乙個時間差,可能會丟失部分日誌資料。

nocopytruncate                備份日誌檔案不過不截斷

create mode owner group        輪轉時指定建立新檔案的屬性,如create 0777 nobody nobody

nocreate                      不建立新的日誌檔案

delaycompress                 和compress 一起使用時,轉儲的日誌檔案到下一次轉儲時才壓縮

nodelaycompress               覆蓋 delaycompress 選項,轉儲同時壓縮。

missingok                     如果日誌丟失,不報錯繼續滾動下乙個日誌

errors address                  轉儲時的錯誤資訊傳送到指定的email 位址

ifempty                       即使日誌檔案為空檔案也做輪轉,這個是logrotate的預設選項。

notifempty                    當日誌檔案為空時,不進行輪轉

mail address                   把轉儲的日誌檔案傳送到指定的e-mail 位址

nomail                       轉儲時不傳送日誌檔案

olddir directory                轉儲後的日誌檔案放入指定的目錄,必須和當前日誌檔案在同乙個檔案系統

noolddir                     轉儲後的日誌檔案和當前日誌檔案放在同乙個目錄下

sharedscripts                 執行postrotate指令碼,作用是在所有日誌都輪轉後統一執行一次指令碼。如果沒有配置這個,那麼每個日誌輪轉後都會執行一次指令碼

prerotate             在logrotate轉儲之前需要執行的指令,例如修改檔案的屬性等動作;必須獨立成行

postrotate            在logrotate轉儲之後需要執行的指令,例如重新啟動 (kill -hup) 某個服務!必須獨立成行

daily                 指定轉儲週期為每天

weekly               指定轉儲週期為每週

monthly              指定轉儲週期為每月

rotate count           指定日誌檔案刪除之前轉儲的次數,0 指沒有備份,5 指保留5 個備份

dateext               使用當期日期作為命名格式

dateformat .%s         配合dateext使用,緊跟在下一行出現,定義檔案切割後的檔名,必須配合dateext使用,只支援 %y %m %d %s 這四個引數

size(或minsize) log-size   當日誌檔案到達指定的大小時才轉儲,log-size能指定bytes(預設)及kb (sizek)或mb(sizem).

當日誌檔案 >= log-size 的時候就轉儲。 以下為合法格式:(其他格式的單位大小寫沒有試過)

size = 5 或 size 5 (>= 5 個位元組就轉儲)

size = 100k 或 size 100k

size = 100m 或 size 100m

現在開始配置和測試logrotate的例子:

當前目錄:

parallels@parallels-vm:/etc/logrotate.d$ pwd

/etc/logrotate.d

在此目錄建立logrotate關聯檔案:

sudo touch test

具體檔案內容如下:

parallels@parallels-vm:/etc/logrotate.d$ sudo cat test 

/tmp/test/*.log

建立存放的日誌目錄:自定義

sudo mkdir /tmp/test

parallels@parallels-vm:/tmp/test$ ll

total 14376

-rw-r--r-- 1 root root 14716979 sep  5 16:15 nohup.err.flask.20180905161553.log

開始測試:

強制執行切割命令測試:

date

mon sep 17 15:59:27 cst 2018

parallels@parallels-vm:/tmp/test$ sudo logrotate -vf /etc/logrotate.conf 

parallels@parallels-vm:/tmp/test$ ll 

total 14376

-rw-r--r-- 1 root root        0 sep 17 15:59 nohup.err.flask.20180905161553.log

-rw-r--r-- 1 root root 14716979 sep 17 15:59 nohup.err.flask.20180905161553.log-20180917

修改當前伺服器時間進行測試:

date -s '2018-09-18 14:22:00』

logrotate -vf /etc/logrotate.conf

lltotal 14376

-rw-r--r-- 1 root root        0 sep 18  2018 nohup.err.flask.20180905161553.log

-rw-r--r-- 1 root root 14716979 sep 17 15:59 nohup.err.flask.20180905161553.log-20180917

-rw-r--r-- 1 root root        0 sep 18  2018 nohup.err.flask.20180905161553.log-20180918

date -s '2018-09-19 14:22:00』 

logrotate -vf /etc/logrotate.conf

lltotal 14376

-rw-r--r-- 1 root root        0 sep 19  2018 nohup.err.flask.20180905161553.log

-rw-r--r-- 1 root root 14716979 sep 17 15:59 nohup.err.flask.20180905161553.log-20180917

-rw-r--r-- 1 root root        0 sep 18  2018 nohup.err.flask.20180905161553.log-20180918

-rw-r--r-- 1 root root        0 sep 19  2018 nohup.err.flask.20180905161553.log-20180919

date -s '2018-09-20 14:22:00』

logrotate -vf /etc/logrotate.conf

lltotal 0

-rw-r--r-- 1 root root 0 sep 20  2018 nohup.err.flask.20180905161553.log

-rw-r--r-- 1 root root 0 sep 18  2018 nohup.err.flask.20180905161553.log-20180918

-rw-r--r-- 1 root root 0 sep 19  2018 nohup.err.flask.20180905161553.log-20180919

-rw-r--r-- 1 root root 0 sep 20  2018 nohup.err.flask.20180905161553.log-20180920

測試完畢:我的設定是保留最近3天的日誌!

Redis管理工具之phpRedisAdmin

phpredisadmin是乙個簡單的web phpredisadmin是乙個簡單的web介面用來管理redis資料庫。可以新增多個server,可以用來檢視 修改 刪除key及資料,也可以實現資料備份及匯出。關於redis及php擴充套件安裝使用可以看這篇文章,關於redis的應用例項可以看看re...

版本管理工具之svn

1 svn 安裝是客戶端命令方式 ui 介面是第三方外掛程式 2 svn執行方式 兩種 基於apache的方式 svnserver的方式,預設是後者 svn資料儲存方式,db fs方式,預設fs 檔案系統 方式 因為更安全更快 建立svn倉庫 單倉庫,多倉庫 命令svnadmin create 倉庫...

專案管理工具之Git

git安裝 雙擊一路下來,根據個人喜好,修改安裝路徑 設定git的user name和email git config global user.name test git config global user.email test bldz.com 生成ssh金鑰過程 1.檢視是否已經有了ssh金鑰...