日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

如何用logrotate管理每日增長的日志

瀏覽:38日期:2023-05-12 10:25:34
目錄
  • logrotate簡介
  • 安裝logrotate
  • logrotate基本工作原理
  • logrotate的配置和使用
  • 總結

logrotate簡介

logrotate is designed to ease administration of systems that generate large numbers of log files. It allows automatic rotation, compression, removal, and mailing of log files. Each log file may be handled daily, weekly, monthly, or when it grows too large.

這是logrotate文檔中對其自身的描述,其實logrotate功能很簡單,正如其名,按一定周期自動循環分割和保存日志防止無限增長,必要的時候進行壓縮、刪除,還可以進行郵件通知等功能。

很多服務器上總會運行著一些會不停生成成噸日志的程序,最簡單的比如nginx、httpd之類的web服務器的訪問日志,為了保持這些日志的可檢索以及防止無限增長把有限的硬盤都吃干凈了,就會有五花八門的cron腳本來處理這些日志,事實上這些事情都可以由logrotate代勞。

安裝logrotate

事實上大多數Linux發行版本都默認安裝了logrotate,可以通過以下命令來判斷系統是否已經預裝了logrotate:

rpm包管理器:

rpm -qa|grep logrotate

dpkg包管理器:

dpkg --list|grep logrotate

更簡單粗暴的方法:

which logrotate

如果能看到有字符串返回的話,你的服務器就應該預裝了logrotate,并且它已經每天在默默地工作了,只不過你并沒有給他分配活兒。

如果沒有安裝的話,用正常的包管理工具都能安裝它:

yum install logrotateapt-get install logrotate

logrotate基本工作原理

作為一個定時處理的管理工具,logrotate本身是個命令行的工具,然而它需要定時處理你的日志,所以顯然logrotate還是得基于cron來工作的,否則就沒有人定時來喚醒它讓它干活了,正常情況下logrotate已經作為cron.daily的一個任務每天被定時在執行了,這個定時腳本位于/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/"http://g" status | while read logfile datedo    [ -e "$logfile" ] && echo "\"$logfile\" $date"done >> status.cleanmv status.clean statustest -x /usr/sbin/logrotate || exit 0/usr/sbin/logrotate /etc/logrotate.conf

上面這段是Ubuntu中默認的logrotate腳本,各個不同版本上的logrotate腳本會有細微的不同,但是核心都是使用/etc/logrotate.conf配置腳本來啟動logrotate。

然而這段腳本只是位于這個目錄里,為什么會被每天調用呢,而且每天什么點調用呢?

可以查看CRON的默認配置文件/etc/crontab(新版CentOS中其默認配置文件位于/etc/anacrontab)的內容:

# /etc/crontab: system-wide crontab# Unlike any other crontab you don"t have to run the `crontab"# command to install the new version when you edit this file# and files in /etc/cron.d. These files also have username fields,# that none of the other crontabs do.SHELL=/bin/shPATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin# m h dom mon dow user  command17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

事實上CRON默認會存在這4條指令,分別是每小時、每天、每周、每個月會執行對應目錄下的腳本,而不需要再通過日常常用的crontab去配置,可以看到cron.daily目錄下的腳本在每天的6點25分會被執行,這也就意味著在這臺機器上每天6點25分會啟動logrotate進行日志的處理,各個系統的默認配置也是各不相同的。

最后來看一下默認的配置文件/etc/logrotate.conf:

# see "man logrotate" for details# rotate log files weeklyweekly# use the syslog group by default, since this is the owning group# of /var/log/syslog.su root syslog# keep 4 weeks worth of backlogsrotate 4# create new (empty) log files after rotating old onescreate# uncomment this if you want your log files compressed#compress# packages drop log rotation information into this directoryinclude /etc/logrotate.d# no packages own wtmp, or btmp -- we"ll rotate them here/var/log/wtmp {    missingok    monthly    create 0664 root utmp    rotate 1}/var/log/btmp {    missingok    monthly    create 0660 root utmp    rotate 1}# system-specific logs may be configured here

其實默認配置文件中給出的是logrotate的一些默認配置選項,并給出了一些樣例的配置(如wtmp,btmp),這些配置的意義在后文中會予以闡述,而這個配置文件中還包含了include /etc/logrotate.d,這使得我們可以不用將所有的配置扎堆寫入這個默認配置文件中,而是可以分散地管理在/etc/logrotate.d目錄下,事實上/etc/logrotate.d也已經包含了一些樣例的配置文件供參考。

logrotate的配置和使用

如同剛才所說的,logrotate會每日CRON啟動并執行,我們只需要在/etc/logrotate.d目錄中添加我們需要的配置,就可以利用logrotate來自動管理我們需要的日志文件。

這里先來看一個目錄下已經存在的樣例配置dpkg:

/var/log/dpkg.log {    monthly    rotate 12    compress    delaycompress    missingok    notifempty    create 644 root root}/var/log/alternatives.log {    monthly    rotate 12    compress    delaycompress    missingok    notifempty    create 644 root root}

正如其名稱dpkg,這個配置是用來處理包管理器dpkg的默認日志的,處理的日志文件是/var/log/dpkg.log與/var/log/alternatives.log這兩個文件

其配置內容如下:

  • monthly:按月處理日志
  • rotate 12:保留12份日志
  • compress:日志分割后會進行gzip壓縮
  • delaycompress:日志壓縮會被延后到下次分割時進行
  • missingok:目標日志文件不存在程序也不會報錯退出
  • notifempty:目標日志文件為空時不進行分割操作
  • create 644 root root:以644也就是rw-r–r–權限來建立分割出來的文件,同時該分割文件所屬用戶為root,用戶組為root

在/var/log下列出文件列表,可以看到dpkg的日志的確被分割并壓縮了:

仿照這個樣例文件,我們可以配置一個類似的處理任務,這里處理一下nginx的log文件,一般web serve的access log文件都是日志重災區,建立一個/etc/logrotate.d/nginx配置文件,內容如下:

/home/wwwlogs/*.log {    daily    rotate 7    dateext    compress    delaycompress        missingok    notifempty    create 644 root root    sharedscripts    postrotatekill -USR1 `cat /usr/local/nginx/logs/nginx.pid`    endscript}

與之前的樣例配置類似,注意到聲明日志文件位置時使用了*通配符,這意味著/home/wwwlogs/下的所有.log文件都會被logrotate處理,這里多出了幾行配置

說明如下:

  • daily:每天處理日志
  • dateext:備份的日志文件的后綴不再是默認的.1 .2 .3的遞增格式,而是.YYYYMMDD的日期格式
  • sharedscripts:配置該選項時,prerotate和postrotate段的腳本會在所有文件被處理結束(被處理前)統一執行,而不是每個文件前后分別執行一次
  • postrotate:處理日志后鉤子,postrotate和endscript構成一個shell語句塊,在日志文件被處理后這部分語句會被執行,對應的還有prerotate語句塊

這樣nginx的log文件的處理配置就完成了,但是我們可能還需要確認一下配置的內容到底是否正確呢,這時候可以利用logrotate命令行的debug選項來進行測試

命令如下:

logrotate -d -f /etc/logrotate.d/nginx

開啟了debug選項時,logrotate會詳細地給出處理日志過程中的處理信息,但是并不會真正地去處理日志文件,所以可以用來測試配置文件處理的是否正確

這行命令的輸出如下:

reading config file /etc/logrotate.d/nginxHandling 1 logsrotating pattern: /home/wwwlogs/*.log  forced from command line (7 rotations)empty log files are not rotated, old logs are removedconsidering log /home/wwwlogs/access.log  log needs rotatingconsidering log /home/wwwlogs/jp01.sanaecon.com.log  log needs rotatingconsidering log /home/wwwlogs/nginx_error.log  log needs rotatingrotating log /home/wwwlogs/access.log, log->rotateCount is 7dateext suffix "-20151108"glob pattern "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"glob finding logs to compress failedglob finding old rotated logs failedrotating log /home/wwwlogs/jp01.sanaecon.com.log, log->rotateCount is 7dateext suffix "-20151108"glob pattern "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"glob finding logs to compress failedglob finding old rotated logs failedrotating log /home/wwwlogs/nginx_error.log, log->rotateCount is 7dateext suffix "-20151108"glob pattern "-[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]"glob finding logs to compress failedglob finding old rotated logs failedrenaming /home/wwwlogs/access.log to /home/wwwlogs/access.log-20151108creating new /home/wwwlogs/access.log mode = 0644 uid = 0 gid = 0renaming /home/wwwlogs/jp01.sanaecon.com.log to /home/wwwlogs/jp01.sanaecon.com.log-20151108creating new /home/wwwlogs/jp01.sanaecon.com.log mode = 0644 uid = 0 gid = 0renaming /home/wwwlogs/nginx_error.log to /home/wwwlogs/nginx_error.log-20151108creating new /home/wwwlogs/nginx_error.log mode = 0644 uid = 0 gid = 0running postrotate scriptrunning script with arg /home/wwwlogs/*.log : "kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`"

可以看到logrotate如我們設想的那樣在正常處理日志文件,至此一個logrotate配置就完成了。

logrotate命令行除了可以用來展示配置文件配置是否正確以外,還可以用來手動執行日志分割,使用以下命令行:

logrotate -f /etc/logrotate.d/nginx

就會脫離CRON手動運行一次日志分割和處理任務,事實上通過這個方式也可以用第三方的其他程序來管理日志分割的頻率。

本文中給出了一些常見的配置文件中的配置參數的含義,更多其他的配置參數的含義和功能可以參考官方的配置文檔:http://linuxconfig.org/logrotate-8-manual-page

總結

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持。

標簽: Linux
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产白浆在线免费观看| 国产精品2023| 国产精品亚洲欧美日韩一区在线| 最新日韩av| 亚洲视频综合| 性欧美精品高清| 亚洲精品三级| 国产日韩欧美一区二区三区在线观看| 国产乱论精品| 久久激情五月婷婷| 久久不卡日韩美女| 国产自产自拍视频在线观看| 99久久婷婷这里只有精品| 尤物在线精品| 亚洲精品福利| 黄色亚洲精品| 天堂成人国产精品一区| 亚洲最新av| 国产免费av国片精品草莓男男| 欧美成人一二区| 国产亚洲一区二区手机在线观看 | av成人国产| 亚洲欧美日韩国产一区二区| 蜜桃av一区| 国产欧美日韩在线观看视频| 国产精品精品国产一区二区| 日韩欧美综合| 欧美日韩水蜜桃| 伊人久久一区| 欧美日韩亚洲三区| 日韩中文字幕高清在线观看| 日韩专区一卡二卡| 日韩欧美中文字幕电影| 国产精品亚洲欧美一级在线| 99久久亚洲精品蜜臀| 国产伦理一区| 成人av动漫在线观看| 欧美三级第一页| 蜜桃av.网站在线观看| 视频一区中文字幕| 欧美成人精品一级| 日韩av福利| 日韩综合一区二区| 日韩国产欧美一区二区| 丝袜av一区| 亚洲午夜免费| 国产精品资源| 欧美丝袜一区| 国产亚洲毛片| 福利在线一区| 日韩av午夜在线观看| 亚洲二区三区不卡| 日本久久精品| 日韩av一二三| 亚洲黄色在线| 中文字幕在线视频网站| 久久aⅴ国产紧身牛仔裤| 久久一区亚洲| 免费在线成人网| 偷拍精品精品一区二区三区| 国产欧美丝祙| 亚洲免费网址| 亚洲伦乱视频| 国精品产品一区| 婷婷综合电影| 中文欧美日韩| 久久久9色精品国产一区二区三区| 国产精品115| 91精品国产自产精品男人的天堂 | 老牛影视精品| 欧美日韩午夜| 乱人伦精品视频在线观看| 精品精品99| 日精品一区二区三区| 欧美特黄一级大片| 亚洲精品系列| 免费在线观看精品| 亚洲二区三区不卡| 国产乱码精品一区二区三区亚洲人| 另类av一区二区| 中文一区二区| 国产精品高清一区二区| 一级欧洲+日本+国产| 国产精品mv在线观看| 日韩专区在线视频| 国内精品麻豆美女在线播放视频| 91成人小视频| 亚洲日产国产精品| 四虎成人精品一区二区免费网站| 亚洲一区欧美激情| 免费看的黄色欧美网站| 91久久视频| 欧美大黑bbbbbbbbb在线| 亚洲精品2区| 国精品一区二区| 午夜精品免费| 国产农村妇女精品一二区| 国产综合精品一区| 国产精品99一区二区三区| 亚洲毛片在线| 日韩精品国产欧美| 日本午夜精品久久久久| 亚洲精品裸体| 欧美一级全黄| 亚洲综合五月| 日本在线成人| 亚洲精品亚洲人成在线观看| 在线精品一区二区| 日本三级亚洲精品| 国产精品xxx| 久久99影视| 国内精品麻豆美女在线播放视频| 精品久久久久中文字幕小说| 欧美亚洲一区二区三区| 亚洲最大av| 国产欧美日韩精品一区二区免费| 欧美偷窥清纯综合图区| 国产调教精品| 国产一区二区三区成人欧美日韩在线观看| 国产精品传媒麻豆hd| 国产亚洲欧美日韩在线观看一区二区| 欧美久久久网站| 日本不卡一区二区三区| 亚洲一区二区动漫| 欧美/亚洲一区| 亚洲综合日韩| 久久国际精品| 国产精品22p| 国产精品久久久免费| 精品亚洲a∨一区二区三区18| 国产亚洲观看| 嫩草伊人久久精品少妇av杨幂| 国产精品porn| 99热国内精品| 日韩av中文字幕一区二区三区| 国产盗摄——sm在线视频| 亚洲欧美日本日韩| 国产精品久久久亚洲一区| 99热国内精品| 国产情侣一区| 亚洲www啪成人一区二区| 黄色亚洲精品| 欧美激情91| 电影91久久久| 综合国产视频| 国产精品毛片久久| 2023国产精品久久久精品双| 欧美一区精品| 激情综合网五月| 欧美精品不卡| 亚洲欧美日韩国产| 久久激情av| 国精品一区二区| 欧美日韩黄网站| 五月天久久久| 久久伊人亚洲| 亚洲综合日本| 国产香蕉精品| 日韩免费看片| 欧美亚洲网站| 激情欧美一区| 国产一区二区三区成人欧美日韩在线观看| 鲁大师成人一区二区三区| 日韩精品欧美| 国产精品天堂蜜av在线播放| 亚州av乱码久久精品蜜桃| 久久99视频| 日本精品国产| 国产aⅴ精品一区二区四区| 亚洲精品高潮| 美日韩精品视频| 欧美 日韩 国产一区二区在线视频| 久久婷婷国产| 亚洲精品2区| 日韩av首页| 91欧美在线| 国产欧美日韩视频在线| 噜噜噜躁狠狠躁狠狠精品视频 | 国产精品66| 日韩av网站在线免费观看| 日韩欧美少妇| 国产精品久久久久久久久妇女| 国产精品免费99久久久| 亚洲综合激情在线| 久久亚洲图片| 国产视频一区三区| 激情久久五月| 国产九一精品| 日韩国产一二三区| 亚洲永久精品唐人导航网址| 久久久国产精品一区二区中文| 国产精品一区亚洲| 日韩激情av在线| 亚洲三级网址| 国产亚洲精品自拍| 91久久在线| 先锋亚洲精品| 蜜桃视频一区二区三区| | 五月激情久久|