濮阳杆衣贸易有限公司

主頁 > 知識庫 > 在Linux系統(tǒng)中使用logrotate來管理日志文件的方法

在Linux系統(tǒng)中使用logrotate來管理日志文件的方法

熱門標(biāo)簽:北京市地圖標(biāo)注 廳外呼梯系統(tǒng)布線 2020電銷機器人排行 鹽城客服外呼系統(tǒng)軟件 焦作人工智能電話機器人軟件 淘寶系統(tǒng)退貨外呼項目考試答案 百度地圖標(biāo)注陰影動態(tài) 貴陽語音電銷機器人招商 鄭州營銷外呼系統(tǒng)運營商

日志文件包含了關(guān)于系統(tǒng)中發(fā)生的事件的有用信息,在排障過程中或者系統(tǒng)性能分析時經(jīng)常被用到。對于忙碌的服務(wù)器,日志文件大小會增長極快,服務(wù)器會很快消耗磁盤空間,這成了個問題。除此之外,處理一個單個的龐大日志文件也常常是件十分棘手的事。
logrotate是個十分有用的工具,它可以自動對日志進行截斷(或輪循)、壓縮以及刪除舊的日志文件。例如,你可以設(shè)置logrotate,讓/var/log/foo日志文件每30天輪循,并刪除超過6個月的日志。配置完后,logrotate的運作完全自動化,不必進行任何進一步的人為干預(yù)。另外,舊日志也可以通過電子郵件發(fā)送,不過該選項超出了本教程的討論范圍。
主流Linux發(fā)行版上都默認(rèn)安裝有l(wèi)ogrotate包,如果出于某種原因,logrotate沒有出現(xiàn)在里頭,你可以使用apt-get或yum命令來安裝。

在Debian或Ubuntu上:

   

復(fù)制代碼
代碼如下:
# apt-get install logrotate cron

在Fedora,CentOS或RHEL上:

   

復(fù)制代碼
代碼如下:
# yum install logrotate crontabs

logrotate的配置文件是/etc/logrotate.conf,通常不需要對它進行修改。日志文件的輪循設(shè)置在獨立的配置文件中,它(們)放在/etc/logrotate.d/目錄下。
樣例一

在第一個樣例中,我們將創(chuàng)建一個10MB的日志文件/var/log/log-file。我們將展示怎樣使用logrotate來管理該日志文件。

我們從創(chuàng)建一個日志文件開始吧,然后在其中填入一個10MB的隨機比特流數(shù)據(jù)。

   

復(fù)制代碼
代碼如下:
# touch /var/log/log-file
# head -c 10M /dev/urandom > /var/log/log-file

由于現(xiàn)在日志文件已經(jīng)準(zhǔn)備好,我們將配置logrotate來輪循該日志文件。讓我們?yōu)樵撐募?chuàng)建一個配置文件。

   

復(fù)制代碼
代碼如下:
# 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: 一次將存儲5個歸檔日志。對于第六個歸檔,時間最久的歸檔將被刪除。
    compress: 在輪循任務(wù)完成后,已輪循的歸檔將使用gzip進行壓縮。
    delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。
    missingok: 在日志輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。
    notifempty: 如果日志文件為空,輪循不會進行。
    create 644 root root: 以指定的權(quán)限創(chuàng)建全新的日志文件,同時logrotate也會重命名原始日志文件。
    postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執(zhí)行。在這種情況下,rsyslogd 進程將立即再次讀取其配置并繼續(xù)運行。

上面的模板是通用的,而配置參數(shù)則根據(jù)你的需求進行調(diào)整,不是所有的參數(shù)都是必要的。
樣例二

在本例中,我們只想要輪循一個日志文件,然而日志文件大小可以增長到50MB。

   

復(fù)制代碼
代碼如下:
# 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)建日期命名,這可以通過添加dateext常熟實現(xiàn)。

   

復(fù)制代碼
代碼如下:
# 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. 手動運行l(wèi)ogrotate

logrotate可以在任何時候從命令行手動調(diào)用。

要調(diào)用為/etc/lograte.d/下配置的所有日志調(diào)用logrotate:

   

復(fù)制代碼
代碼如下:
# logrotate /etc/logrotate.conf

要為某個特定的配置調(diào)用logrotate:

   

復(fù)制代碼
代碼如下:
# logrotate /etc/logrotate.d/log-file

2. 演練

排障過程中的最佳選擇是使用‘-d’選項以預(yù)演方式運行l(wèi)ogrotate。要進行驗證,不用實際輪循任何日志文件,可以模擬演練日志輪循并顯示其輸出。

   

復(fù)制代碼
代碼如下:
# logrotate -d /etc/logrotate.d/log-file
 
    

    正如我們從上面的輸出結(jié)果可以看到的,logrotate判斷該輪循是不必要的。如果文件的時間小于一天,這就會發(fā)生了。
3. 強制輪循

即使輪循條件沒有滿足,我們也可以通過使用‘-f’選項來強制logrotate輪循日志文件,‘-v’參數(shù)提供了詳細的輸出。

   

復(fù)制代碼
代碼如下:
# 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記錄到任何指定的文件,我們可以指定像下面這樣從命令行指定。

   

復(fù)制代碼
代碼如下:
# logrotate -vf –s /var/log/logrotate-status /etc/logrotate.d/log-file

5. Logrotate定時任務(wù)

logrotate需要的cron任務(wù)應(yīng)該在安裝時就自動創(chuàng)建了,我把cron文件的內(nèi)容貼出來,以供大家參考。

   

復(fù)制代碼
代碼如下:
# 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/"http://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工具對于防止因龐大的日志文件而耗盡存儲空間是十分有用的。配置完畢后,進程是全自動的,可以長時間在不需要人為干預(yù)下運行。本教程重點關(guān)注幾個使用logrotate的幾個基本樣例,你也可以定制它以滿足你的需求。

希望本文對你有所幫助。

標(biāo)簽:樂山 周口 大興安嶺 大慶 遼寧 六安 青島 大理

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《在Linux系統(tǒng)中使用logrotate來管理日志文件的方法》,本文關(guān)鍵詞  在,Linux,系統(tǒng),中,使用,logrotate,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《在Linux系統(tǒng)中使用logrotate來管理日志文件的方法》相關(guān)的同類信息!
  • 本頁收集關(guān)于在Linux系統(tǒng)中使用logrotate來管理日志文件的方法的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    通江县| 万安县| 阳东县| 苏尼特左旗| 呼伦贝尔市| 孟津县| 漠河县| 四平市| 喀喇| 石棉县| 顺昌县| 延川县| 西乌珠穆沁旗| 沁水县| 东兰县| 长治市| 竹山县| 阿瓦提县| 沁源县| 和田市| 峨边| 长治市| 轮台县| 巴马| 革吉县| 冀州市| 大田县| 宿迁市| 科技| 泾阳县| 巴南区| 松阳县| 景泰县| 巨野县| 尼勒克县| 咸宁市| 日土县| 襄垣县| 常德市| 怀集县| 镇沅|