Linux系統(tǒng)中使用logrotate來管理日志文件的方法-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“Linux系統(tǒng)中使用logrotate來管理日志文件的方法”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“Linux系統(tǒng)中使用logrotate來管理日志文件的方法”吧!

目前創(chuàng)新互聯(lián)公司已為數(shù)千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站運營、企業(yè)網(wǎng)站設(shè)計、馬龍網(wǎng)站維護等服務(wù),公司將堅持客戶導向、應用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。

在Debian或Ubuntu上:


代碼如下:

# apt-get install logrotate cron

在Fedora,CentOS或RHEL上:


代碼如下:

# 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ù)。


代碼如下:

# touch /var/log/log-file
   # head -c 10M < /dev/urandom > /var/log/log-file

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


代碼如下:

# 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: 日志文件將按月輪循。其它可用值為&lsquo;daily&rsquo;,&lsquo;weekly&rsquo;或者&lsquo;yearly&rsquo;。
    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。


代碼如下:

# 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)。


代碼如下:

# 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:


代碼如下:

# logrotate /etc/logrotate.conf

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


代碼如下:

# logrotate /etc/logrotate.d/log-file

2. 演練

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


代碼如下:

# logrotate -d /etc/logrotate.d/log-file

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

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

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


代碼如下:

# 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 &ndash;s /var/log/logrotate-status /etc/logrotate.d/log-file

5. Logrotate定時任務(wù)

logrotate需要的cron任務(wù)應該在安裝時就自動創(chuàng)建了,我把cron文件的內(nè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工具對于防止因龐大的日志文件而耗盡存儲空間是十分有用的。配置完畢后,進程是全自動的,可以長時間在不需要人為干預下運行。本教程重點關(guān)注幾個使用logrotate的幾個基本樣例,你也可以定制它以滿足你的需求。

到此,相信大家對“Linux系統(tǒng)中使用logrotate來管理日志文件的方法”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!

分享文章:Linux系統(tǒng)中使用logrotate來管理日志文件的方法-創(chuàng)新互聯(lián)
瀏覽地址:http://muchs.cn/article22/ddddcc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供虛擬主機、做網(wǎng)站云服務(wù)器軟件開發(fā)、電子商務(wù)網(wǎng)站排名

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)