日誌管理工具logrotate
1執行原理
Logrotate是基於CRON來執行的,其指令碼是/etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
/etc/cron.daily目錄所有指令碼執行頻率是由CRON透過/etc/crontab控制,
有兩種執行方式: 1 直接執行單個命令; 2 目錄規劃,下面僅列舉目錄規劃配置
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
# run-parts
*/1 * * * * root run-parts /etc/cron.min
01 * * * * root run-parts /etc/cron.hourly
59 23 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly
2配置檔案
/etc/logrotate.conf 全域性預設檔案
/etc/logrotate.d/ 目錄,下屬檔案透過include納入前者
常用選項
weekly <==預設一週執行一次 rotate 工作
rotate 4 <==保留多少個日誌檔案.預設保留四個.
create <==建立新的檔案.因為日誌被改名,因此要建立一個新的來繼續儲存之前的日誌
dateext <==檔案字尾是日期格式,也就是切割後檔案是:xxx.log-20131216,如果註釋掉,切割出來是按數字遞增,即前面說的 xxx.log-1
compress <==是否壓縮日誌.
include /etc/logrotate.d # 將 /etc/logrotate.d/ 目錄中的所有檔案都載入進來
/var/log/wtmp { <==僅針對 /var/log/wtmp 所設定的引數
monthly <==每月一次切割,取代預設的一週
minsize 1M <==檔案大小超過 1M 後才會切割
create 0664 root utmp <==指定新建的日誌檔案許可權以及所屬使用者和組
rotate 1 <==只保留一個日誌.
}
透過include載入的檔案示例如下
[root@www ~]# vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron
{
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/messages
endscript
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
/bin/kill -HUP `cat /var/run/rsyslogd.pid 2> /dev/null` 2> /dev/null || true
/usr/bin/chattr +a /var/log/messages
endscript
}
日誌檔案: 被處理的日誌絕對路徑.使用空格符分隔多個檔名;
執行指令碼:
可呼叫外部指令來進行額外的命令,這個設定需與 sharedscripts .... endscript 設定合用才行。命令介紹:
prerotate:在啟動 logrotate 之前進行的指令,例如修改檔案的屬性等動作;
postrotate:在做完 logrotate 之後啟動的指令,例如重新啟動 (kill -HUP) 某個服務;
那麼 /etc/logrotate.d/syslog 內設定的六個檔案的切割功能就變成了:
1.該設定只對 /var/log/ 內的 messages, secure, maillog, spooler, boot.log, cron 有效;
2.日誌切割每週一次、保留四個、且切割下來的日誌檔案不進行壓縮(未更改預設值);
3.切割完畢後 (postrotate) 取得 syslog 的 PID 後,以 kill -HUP 重新啟動 syslogd
切割案例:Nginx
============================
在 /etc/logrotate.d 新建 nginx
/usr/local/nginx/logs/*.log {
daily
rotate 5
dateext
compress
sharedscripts
postrotate
if [ -f /usr/local/nginx/logs/nginx.pid ]; then
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
fi
endscript
}
參考資料
http://blog.sina.com.cn/s/blog_5f54f0be0101h6y8.html
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29734436/viewspace-1406836/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 日誌切分神器--logrotatelogrotate
- tomcat日誌切割-logrotateTomcatlogrotate
- 使用logrotate配置日誌輪詢logrotate
- 使用logrotate管理日誌檔案logrotate
- 使用logrotate 管理Linux日誌檔logrotateLinux
- 使用logrotate來壓縮日誌(轉)logrotate
- 使用logrotate 管理日誌檔案(轉)logrotate
- nginx1.24配置logrotate日誌切割Nginxlogrotate
- 使用logrotate 管理Linux日誌檔(zt)logrotateLinux
- 如何使用 logrotate 命令保持日誌檔案更新logrotate
- linux 小工具之:日誌切割(logrotate)Linuxlogrotate
- Linux 下 logrotate 日誌輪詢操作梳理Linuxlogrotate
- Linux日誌管理神器logrotate使用簡介Linuxlogrotate
- logrotate 不支援不同裝置間的日誌轉儲logrotate
- 日誌切割logrotate和定時任務crontab詳解logrotate
- 在Linux中,如何使用logrotate命令管理日誌檔案?Linuxlogrotate
- 華納雲:Linux中如何用logrotate管理每日增長的日誌Linuxlogrotate
- Logrotate日誌切割報錯 檔案不再同一個使用者組下logrotate
- 運維中的日誌切割操作梳理(Logrotate/python/shell指令碼實現)運維logrotatePython指令碼
- logrotate自動輪換切割壓縮和清理歷史日誌場景介紹logrotate
- /etc/logrotate.d 設定檔案使log可以迴圈寫入(日誌輪詢)logrotate
- mysql之 日誌體系(錯誤日誌、查詢日誌、二進位制日誌、事務日誌、中繼日誌)MySql中繼
- php日誌,記錄日誌PHP
- 日誌分析-apache日誌分析Apache
- Java程式設計師須知的七個日誌管理工具Java程式設計師
- 聯機重做日誌、歸檔日誌、備用重做日誌
- mysql 日誌之錯誤日誌MySql
- mysql 日誌之慢查詢日誌MySql
- 【Oracle日誌】- 日誌檔案重建Oracle
- 日誌
- [日誌分析篇]-利用ELK分析jumpserver日誌-日誌拆分篇Server
- mysql 日誌之普通查詢日誌MySql
- Apche日誌系列(4):日誌分析(轉)
- mysql 日誌之二進位制日誌MySql
- MYSQL啟用日誌和檢視日誌MySql
- Apche日誌系列(1):訪問日誌(轉)
- Apche日誌系列(2):錯誤日誌(轉)
- Apche日誌系列(3):定製日誌(轉)