網(wǎng)站開發(fā)中網(wǎng)頁之間的鏈接形式有模板建站流程
簡介
logrotate 是一個用于管理日志文件的工具。它可以自動對日志文件進行輪轉(zhuǎn)、壓縮、刪除等操作,以防止日志文件無限增長占用過多磁盤空間。logrotate 通常作為一個守護進程定期運行,也可以通過 cron 任務來調(diào)度執(zhí)行
工作原理
- 按照配置文件中的規(guī)則,定期檢查要管理的日志文件。
- 如果滿足輪轉(zhuǎn)條件(例如達到指定的時間間隔、文件大小等),logrotate 會執(zhí)行以下操作:
- 復制當前日志文件(如果使用了?
copytruncate
?參數(shù),則是先復制再清空原文件)。 - 重命名復制后的文件,添加輪轉(zhuǎn)編號。
- 根據(jù)配置對舊日志文件進行壓縮(如果配置了?
compress
?參數(shù))。 - 刪除超過保留數(shù)量的舊日志文件。
- 復制當前日志文件(如果使用了?
- 完成日志文件的輪轉(zhuǎn)操作后,logrotate 會更新相關(guān)的狀態(tài)信息,以便下次運行時能夠正確判斷日志文件的狀態(tài)。
相關(guān)信息
命令參數(shù)
copytruncate
:用于在切割日志文件時,先復制日志文件內(nèi)容,然后清空原日志文件,而不是移動原日志文件。這樣可以保證在切割日志文件時,應用程序仍然可以向原日志文件寫入日志。compress
:對輪轉(zhuǎn)后的舊日志文件進行壓縮,通常使用 gzip 壓縮格式。daily
/weekly
/monthly
:指定日志文件的輪轉(zhuǎn)頻率,可以是每天、每周或每月。rotate
:指定保留的日志文件輪轉(zhuǎn)數(shù)量。例如,rotate 5
表示保留最近的 5 個輪轉(zhuǎn)后的日志文件。size
:根據(jù)日志文件的大小進行輪轉(zhuǎn)。例如,size 100k
表示當日志文件達到 100KB 時進行輪轉(zhuǎn)。
配置目錄:/etc/logrotate.conf
獨立配置目錄:/etc/logrotate.d/xxx
查看版本信息:
logrotate --version
?
logrotate 的主配置文件通常是?/etc/logrotate.conf
。此外,還可以在?/etc/logrotate.d/
?目錄下創(chuàng)建單獨的配置文件,每個配置文件對應一個要管理的日志文件或一組日志文件
1. 手動執(zhí)行 logrotate
可以直接運行 logrotate 命令來執(zhí)行默認配置文件 /etc/logrotate.conf。如果要執(zhí)行特定的配置文件,可以這樣:logrotate /path/to/custom.conf2. 查看 logrotate 狀態(tài)
使用 logrotate -d [配置文件路徑] 可以進行模擬執(zhí)行,即顯示如果執(zhí)行 logrotate 會發(fā)生的操作,但不會實際修改日志文件。這對于檢查配置文件的正確性很有用3. 強制執(zhí)行 logrotate
logrotate -f [配置文件路徑] 可以強制進行日志輪轉(zhuǎn),即使日志文件沒有滿足通常的輪轉(zhuǎn)條件4. 輸出詳細信息
logrotate -v [配置文件路徑] 會輸出詳細的執(zhí)行過程信息,幫助你了解 logrotate 具體在做什么以mylog 為例# 查看模擬執(zhí)行效果
logrotate -d /etc/logrotate.d/mylog# 強制執(zhí)行日志輪轉(zhuǎn)
logrotate -f /etc/logrotate.d/mylog# 以詳細模式執(zhí)行
logrotate -v /etc/logrotate.d/mylog
應用示例
場景:以openresty 中的nginx 日志為例 進行切割
切換到?/etc/logrotate.d 目錄下
創(chuàng)建 openresty_nginx 文件(文件名隨意) 并進行如下的配置
相關(guān)命令
#切換到配置目錄
cd /etc/logrotate.d#創(chuàng)建新的配置文件
touch openresty_nginx#編輯文件
vi openresty_nginx
openresty_nginx 文件內(nèi)容添加如下的配置信息
/usr/local/openresty/nginx/logs/*.log {su root rootdailyrotate 7missingoknotifemptycompressdelaycompresspostrotateif [ -f /usr/local/openresty/nginx/logs/nginx.pid ]; thensystemctl restart openresty.service fiendscript
}
手動 啟動一次 驗證配置是否正確
logrotate -vf /etc/logrotate.conf
完結(jié)撒花!!!?
問題
rotating pattern: /usr/local/openresty/nginx/logs/*.log ?forced from command line (7 rotations)
empty log files are not rotated, old logs are removed
considering log /usr/local/openresty/nginx/logs/access.log
error: skipping "/usr/local/openresty/nginx/logs/access.log" because parent directory has insecure permissions (It's world writable or writable by group which is not "root") Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
?原因:日志文件(xxxlog)的父文件夾有“w”的組權(quán)限,通常只用所屬組為root 才會出現(xiàn)這個錯誤
解決方案:
方法一:去掉對應日志父目錄的“w”組權(quán)限 ---- g-w
方法二:在對應的logrotate配置文件中添加“su <dir_user> <dir_group>”
su root root (第一root 文件夾所屬用戶名,第二個root文件夾所屬用戶組)