Linux系統操作中,Logrotate是一款日志管理工具,可對Linux日志進行處理,在使用前,需要對Logrotate工具進行配置,下面小編就給大家介紹下Linux中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
}
上面就是Linux中Logrotate工具的用法介紹了,本文介紹了Logrotate工具的運行原理和Logrotate文件的配置,如果你要管理Linux系統日志,可選擇使用Logrotate日志管理工具。