日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux日志文件总管——logrotate

發(fā)布時間:2023/12/19 linux 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux日志文件总管——logrotate 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

日志文件包含了關于系統(tǒng)中發(fā)生的事件的有用信息,在排障過程中或者系統(tǒng)性能分析時經常被用到。對于忙碌的服務器,日志文件大小會增長極快,服務器會很快消耗磁盤空間,這成了個問題。除此之外,處理一個單個的龐大日志文件也常常是件十分棘手的事。

logrotate是個十分有用的工具,它可以自動對日志進行截斷(或輪循)、壓縮以及刪除舊的日志文件。例如,你可以設置logrotate,讓/var/log/foo日志文件每30天輪循,并刪除超過6個月的日志。配置完后,logrotate的運作完全自動化,不必進行任何進一步的人為干預。另外,舊日志也可以通過電子郵件發(fā)送,不過該選項超出了本教程的討論范圍。

主流Linux發(fā)行版上都默認安裝有l(wèi)ogrotate包,如果出于某種原因,logrotate沒有出現在里頭,你可以使用apt-get或yum命令來安裝。

在Debian或Ubuntu上:

#?apt-get?install?logrotate?cron

在Fedora,CentOS或RHEL上:

#?yum?install?logrotate?crontabs

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

樣例一

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

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

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

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

#?vim?/etc/logrotate.d/log-file
/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: 在輪循任務完成后,已輪循的歸檔將使用gzip進行壓縮。

  • delaycompress: 總是與compress選項一起用,delaycompress選項指示logrotate不要將最近的歸檔壓縮,壓縮將在下一次輪循周期進行。這在你或任何軟件仍然需要讀取最新歸檔時很有用。

  • missingok: 在日志輪循期間,任何錯誤將被忽略,例如“文件無法找到”之類的錯誤。

  • notifempty: 如果日志文件為空,輪循不會進行。

  • create 644 root root: 以指定的權限創(chuàng)建全新的日志文件,同時logrotate也會重命名原始日志文件。

  • postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令將被執(zhí)行。在這種情況下,rsyslogd 進程將立即再次讀取其配置并繼續(xù)運行。

上面的模板是通用的,而配置參數則根據你的需求進行調整,不是所有的參數都是必要的。

樣例二

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

#?vim?/etc/logrotate.d/log-file
/var/log/log-file?{????size=50M????rotate?5????create?644?root?root????postrotate????????/usr/bin/killall?-HUP?rsyslogd????endscript}

樣例三

我們想要讓舊日志文件以創(chuàng)建日期命名,這可以通過添加dateext常熟實現。

#?vim?/etc/logrotate.d/log-file
/var/log/log-file?{????monthly????rotate?5????dateext????create?644?root?root????postrotate????????/usr/bin/killall?-HUP?rsyslogd????endscript}

這將讓歸檔文件在它們的文件名中包含日期信息。

排障

這里提供了一些logrotate設置的排障提示。

1. 手動運行l(wèi)ogrotate

logrotate可以在任何時候從命令行手動調用。

要調用為/etc/lograte.d/下配置的所有日志調用logrotate

#?logrotate?/etc/logrotate.conf

要為某個特定的配置調用logrotate:

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

2. 演練

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

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

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

3. 強制輪循

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

#?logrotate?-vf?/etc/logrotate.d/log-file
reading?config?file?/etc/logrotate.d/log-filereading?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?removedconsidering?log?/var/log/log-file??log?needs?rotatingrotating?log?/var/log/log-file,?log->rotateCount?is?5dateext?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?existrenaming?/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?existlog?/var/log/log-file.6.gz?doesn't?exist?--?won't?try?to?dispose?of?itrenaming?/var/log/log-file?to?/var/log/log-file.1creating?new?/var/log/log-file?mode?=?0644?uid?=?0?gid?=?0running?postrotate?scriptcompressing?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定時任務

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

#?cat?/etc/cron.daily/logrotate
#!/bin/sh?#?Clean?non?existent?log?file?entries?from?status?filecd?/var/lib/logrotatetest?-e?status?||?touch?statushead?-1?status?>?status.cleansed?'s/"//g'?status?|?while?read?logfile?datedo????[?-e?"$logfile"?]?&&?echo?"\"$logfile\"?$date"done?>>?status.cleanmv?status.clean?status?test?-x?/usr/sbin/logrotate?||?exit?0/usr/sbin/logrotate?/etc/logrotate.conf

小結一下,logrotate工具對于防止因龐大的日志文件而耗盡存儲空間是十分有用的。配置完畢后,進程是全自動的,可以長時間在不需要人為干預下運行。本教程重點關注幾個使用logrotate的幾個基本樣例,你也可以定制它以滿足你的需求。


轉載于:https://blog.51cto.com/10915585/1731165

總結

以上是生活随笔為你收集整理的Linux日志文件总管——logrotate的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。