您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Linux系統(tǒng)中使用logrotate來(lái)管理日志文件的方法”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Linux系統(tǒng)中使用logrotate來(lái)管理日志文件的方法”吧!
在Debian或Ubuntu上:
代碼如下:
# apt-get install logrotate cron
在Fedora,CentOS或RHEL上:
代碼如下:
# yum install logrotate crontabs
logrotate的配置文件是/etc/logrotate.conf,通常不需要對(duì)它進(jìn)行修改。日志文件的輪循設(shè)置在獨(dú)立的配置文件中,它(們)放在/etc/logrotate.d/目錄下。
樣例一
在第一個(gè)樣例中,我們將創(chuàng)建一個(gè)10MB的日志文件/var/log/log-file。我們將展示怎樣使用logrotate來(lái)管理該日志文件。
我們從創(chuàng)建一個(gè)日志文件開(kāi)始吧,然后在其中填入一個(gè)10MB的隨機(jī)比特流數(shù)據(jù)。
代碼如下:
# touch /var/log/log-file
# head -c 10M < /dev/urandom > /var/log/log-file
由于現(xiàn)在日志文件已經(jīng)準(zhǔn)備好,我們將配置logrotate來(lái)輪循該日志文件。讓我們?yōu)樵撐募?chuàng)建一個(gè)配置文件。
代碼如下:
# vim /etc/logrotate.d/log-file </p>
<p> /var/log/log-file {
monthly
rotate 5
compress
delaycompress
missingok
notifempty
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
這里:
monthly: 日志文件將按月輪循。其它可用值為‘daily’,‘weekly’或者‘yearly’。
rotate 5: 一次將存儲(chǔ)5個(gè)歸檔日志。對(duì)于第六個(gè)歸檔,時(shí)間最久的歸檔將被刪除。
compress: 在輪循任務(wù)完成后,已輪循的歸檔將使用gzip進(jìn)行壓縮。
delaycompress: 總是與compress選項(xiàng)一起用,delaycompress選項(xiàng)指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進(jìn)行。這在你或任何軟件仍然需要讀取最新歸檔時(shí)很有用。
missingok: 在日志輪循期間,任何錯(cuò)誤將被忽略,例如“文件無(wú)法找到”之類(lèi)的錯(cuò)誤。
notifempty: 如果日志文件為空,輪循不會(huì)進(jìn)行。
create 644 root root: 以指定的權(quán)限創(chuàng)建全新的日志文件,同時(shí)logrotate也會(huì)重命名原始日志文件。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執(zhí)行。在這種情況下,rsyslogd 進(jìn)程將立即再次讀取其配置并繼續(xù)運(yùn)行。
上面的模板是通用的,而配置參數(shù)則根據(jù)你的需求進(jìn)行調(diào)整,不是所有的參數(shù)都是必要的。
樣例二
在本例中,我們只想要輪循一個(gè)日志文件,然而日志文件大小可以增長(zhǎng)到50MB。
代碼如下:
# vim /etc/logrotate.d/log-file </p>
<p> /var/log/log-file {
size=50M
rotate 5
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
樣例三
我們想要讓舊日志文件以創(chuàng)建日期命名,這可以通過(guò)添加dateext常熟實(shí)現(xiàn)。
代碼如下:
# vim /etc/logrotate.d/log-file </p>
<p> /var/log/log-file {
monthly
rotate 5
dateext
create 644 root root
postrotate
/usr/bin/killall -HUP rsyslogd
endscript
}
這將讓歸檔文件在它們的文件名中包含日期信息。
排障
這里提供了一些logrotate設(shè)置的排障提示。
1. 手動(dòng)運(yùn)行l(wèi)ogrotate
logrotate可以在任何時(shí)候從命令行手動(dòng)調(diào)用。
要調(diào)用為/etc/lograte.d/下配置的所有日志調(diào)用logrotate:
代碼如下:
# logrotate /etc/logrotate.conf
要為某個(gè)特定的配置調(diào)用logrotate:
代碼如下:
# logrotate /etc/logrotate.d/log-file
2. 演練
排障過(guò)程中的最佳選擇是使用‘-d’選項(xiàng)以預(yù)演方式運(yùn)行l(wèi)ogrotate。要進(jìn)行驗(yàn)證,不用實(shí)際輪循任何日志文件,可以模擬演練日志輪循并顯示其輸出。
代碼如下:
# logrotate -d /etc/logrotate.d/log-file
正如我們從上面的輸出結(jié)果可以看到的,logrotate判斷該輪循是不必要的。如果文件的時(shí)間小于一天,這就會(huì)發(fā)生了。
3. 強(qiáng)制輪循
即使輪循條件沒(méi)有滿足,我們也可以通過(guò)使用‘-f’選項(xiàng)來(lái)強(qiáng)制logrotate輪循日志文件,‘-v’參數(shù)提供了詳細(xì)的輸出。
代碼如下:
# logrotate -vf /etc/logrotate.d/log-file </p>
<p> reading config file /etc/logrotate.d/log-file
reading config info for /var/log/log-file
Handling 1 logs
rotating pattern: /var/log/log-file forced from command line (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/log-file
log needs rotating
rotating log /var/log/log-file, log->rotateCount is 5
dateext suffix '-20140916'
glob pattern '-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]'
renaming /var/log/log-file.5.gz to /var/log/log-file.6.gz (rotatecount 5, logstart 1, i 5),
old log /var/log/log-file.5.gz does not exist
renaming /var/log/log-file.4.gz to /var/log/log-file.5.gz (rotatecount 5, logstart 1, i 4),
old log /var/log/log-file.4.gz does not exist
. . .
renaming /var/log/log-file.0.gz to /var/log/log-file.1.gz (rotatecount 5, logstart 1, i 0),
old log /var/log/log-file.0.gz does not exist
log /var/log/log-file.6.gz doesn't exist -- won't try to dispose of it
renaming /var/log/log-file to /var/log/log-file.1
creating new /var/log/log-file mode = 0644 uid = 0 gid = 0
running postrotate script
compressing log with: /bin/gzip
4. Logrotate的記錄日志
logrotate自身的日志通常存放于/var/lib/logrotate/status目錄。如果處于排障目的,我們想要logrotate記錄到任何指定的文件,我們可以指定像下面這樣從命令行指定。
代碼如下:
# logrotate -vf –s /var/log/logrotate-status /etc/logrotate.d/log-file
5. Logrotate定時(shí)任務(wù)
logrotate需要的cron任務(wù)應(yīng)該在安裝時(shí)就自動(dòng)創(chuàng)建了,我把cron文件的內(nèi)容貼出來(lái),以供大家參考。
代碼如下:
# cat /etc/cron.daily/logrotate </p>
<p> #!/bin/sh
# Clean non existent log file entries from status file
cd /var/lib/logrotate
test -e status || touch status
head -1 status > status.clean
sed 's/"//g' status | while read logfile date
do
[ -e "$logfile" ] && echo "\"$logfile\" $date"
done >> status.clean
mv status.clean status
test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf
小結(jié)一下,logrotate工具對(duì)于防止因龐大的日志文件而耗盡存儲(chǔ)空間是十分有用的。配置完畢后,進(jìn)程是全自動(dòng)的,可以長(zhǎng)時(shí)間在不需要人為干預(yù)下運(yùn)行。本教程重點(diǎn)關(guān)注幾個(gè)使用logrotate的幾個(gè)基本樣例,你也可以定制它以滿足你的需求。
到此,相信大家對(duì)“Linux系統(tǒng)中使用logrotate來(lái)管理日志文件的方法”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。