返回顶部
首页 > 资讯 > 操作系统 >Linux的logrotate是什么
  • 715
分享到

Linux的logrotate是什么

2023-06-16 01:06:48 715人浏览 八月长安
摘要

这篇文章主要讲解了“linux的logrotate是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的logrotate是什么”吧!登录到WEB服务上,上来 df -h 一把,果

这篇文章主要讲解了“linux的logrotate是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的logrotate是什么”吧!

登录到WEB服务上,上来 df -h 一把,果然,挂的一个共享又被撑爆。

root@websrv001 ~ # df -h  Filesystem            Size  Used Avail Use% Mounted on  /dev/mapper/rootvg-rootvol                         12G  5.6G  5.6G  50% /  tmpfs                  14G     0   14G   0% /dev/shm  /dev/sda1             477M   84M  368M  19% /boot  /dev/mapper/rootvg-homevol                        2.0G  4.0M  1.9G   1% /local/home  /dev/mapper/rootvg-tmpvol                        1.1G  252M  793M  25% /tmp  /dev/mapper/rootvg-varvol                        5.8G  1.1G  4.5G  20% /var  /dev/mapper/fsvol                        298G  298G     0 100% /net/fsvol  tmpfs                  14G     0   14G   0% /var/tmp

上次是因为liferay的log太大,这次再看看liferay的log

root@websrv001 ~ # ll -h /data/Tomcat/storage/BU001/liferay/logs/  total 199M  drwxr-xr-x 2 tomcat tomcat 4.0K Apr 20 13:14 .  drwxr-xr-x 5 tomcat tomcat 4.0K Mar 14  2016 ..  -rw-r--r-- 1 tomcat tomcat 1.5M Apr 13 23:59 liferay.2020-04-13.log.gzipped_on_2020-04-17.gz  -rw-r--r-- 1 tomcat tomcat 2.5M Apr 14 23:59 liferay.2020-04-14.log.gzipped_on_2020-04-18.gz  -rw-r--r-- 1 tomcat tomcat 7.8M Apr 15 23:59 liferay.2020-04-15.log.gzipped_on_2020-04-19.gz  -rw-r--r-- 1 tomcat tomcat  31M Apr 17 23:58 liferay.2020-04-17.log  -rw-r--r-- 1 tomcat tomcat 7.0M Apr 18 23:59 liferay.2020-04-18.log  -rw-r--r-- 1 tomcat tomcat  90G Apr 20 17:54 liferay.2020-04-20.log

我列个去,尼玛,一个liferay log文件,能增长到90G,这也太扯了 吧。果断删掉,不知道为什么,每当我要敲rm -rf的时候,心里就莫名的紧张。。。

root@websrv001 ~ # rm -rf /data/tomcat/storage/BU001/liferay/logs/liferay.2020-04-20.log

重启一下服务

root@websrv001 ~ # service tomcat restart

随后通知了一下开发组那哥们儿,服务器磁盘已经清理,服务已经重启,那边也确认了web服务又活了,可以用了。随后,又检查了一下其它文件夹,结果发现catalina.out这个日志文件,又是超级无敌大:89G,我也是醉了。

root@websrv001 ~ # ll -h /data/tomcat/server/BU001/logs/  total 104G  drwxrwxr-x  2 root   tomcat  12K Apr 20 04:45 .  drwxr-xr-x 13 root   root   4.0K Apr 16 17:26 ..  -rw-r--r--  1 tomcat tomcat 5.1K Apr 13 10:28 catalina.2020-04-13.log.gz  -rw-r--r--  1 tomcat tomcat  13K Apr 14 20:46 catalina.2020-04-14.log.gz  -rw-r--r--  1 tomcat tomcat 7.1K Apr 16 17:51 catalina.2020-04-16.log.gz  -rw-r--r--  1 tomcat tomcat  89G Apr 20 10:39 catalina.out -rw-r--r--  1 tomcat tomcat    0 Feb 10 23:57 catalina.out-20200210  -rw-r--r--  1 tomcat tomcat 352M Apr 13 03:38 catalina.out-20200413

问题虽然解决了,但是这个问题本来就不应该发生啊!难道之前做运维的同事都没有做脚本来监控和限制日志大小嘛?这可是生产系统啊!这样可不行,既然没人搞,我就来搞搞。于是网上搜了一把,原来Linux系统就自带了一个日志切割神器——>logrotate

man了一下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.

NORMally, logrotate is run as a daily cron job. It will not modify a log more than once in one day unless the criterion for that log is based on the log's size and logrotate is being run more than once each day, or unless the -f or --force option is used.

原来这个神器是为了方便管理系统大量日志文件而设计的,对日志文件可实现自动rotation(字面意思是旋转,觉得理解成日志循环更好一些),压缩,删除和通过email发送log文件。颗粒度控制很好,可以针对每一个log文件进行每天,每周,每个月或者当log文件过大时进行rotate。

一般情况下呢,logrotate是基于每天的cron job来执行的,所以对某个log文件的rotae每天执行一次,除非rotate的执行标准是基于log文件大小,并且你logrotate这个命令每天被执行了多次,也就是你自定义了定时任务,让logrotate每x分钟或者每x小时执行一次,再或者你手动执行这个命令添加了-f/--force这个选项。

另外,我发现这个神器是系统自带的,可想而知这个工具是多么的重要,否则Linux也不会默认就安装了这个工具。

那接下来,我们来看看logrotate的相关配置以及如何执行logrotate。

logrotate的conf文件在 /etc/下:

[root@labhost ~]# ll /etc/logrotate.  logrotate.conf  logrotate.d/  [root@labhost ~]# cat /etc/logrotate.conf

那我们来看看logrotate.conf文件里面的内容:

[root@labhost ~]# cat /etc/logrotate.conf  # see "man logrotate" for details  # rotate log files weekly:每周rotate log文件一次  weekly  # keep 4 weeks worth of backlogs:保存最近4周的log日志,因为上面是每周rotate一次  rotate 4  # create new (empty) log files after rotating old ones:rotate老日志文件之后,创建一个新的空日志文件  create  # use date as a suffix of the rotated file:rotate的文件以日期格式为后缀,比如:access_log-20200422,如果不加这个选项,rotate的格式为:access_log.1,access_log.2等等。  dateext  # uncomment this if you want your log files compressed:如果想压缩rotate后的文件,把下面compress前面的#号去掉就可以了。  #compress  # RPM packages drop log rotation information into this directory:RPM包的日志rotation配置信息,建议放到/etc/logrotate.d这个文件夹下,实现自定义控制log文件rotate  include /etc/logrotate.d  # no packages own wtmp and btmp -- we'll rotate them here:wtmp和btmp这两个不属于任何package,我们就把rotate的规则写到这里  /var/log/wtmp {       monthly #每个月执行一次rotate      create 0664 root utmp  #创建空文件,权限是664, 所属用户名 所属用户组          minsize 1M   #日志文件大小超过1M才执行rotate,否则跳过      rotate 1         #rotate时,只保留一份rotate文件  }  /var/log/btmp {      missinGok      monthly      create 0600 root utmp      rotate 1  }  # system-specific logs may be also be configured here.#其它系统日志也可以在这里配置rotate规则

关于rotate规则的配置,从上面的logrotate.conf文件里可以看到,有两个地方可以配置:

  • 一种是直接在logrotate.conf里配置,不过一般适用于非RPM包的系统日志文件。

  • 另外一种是如果你要做rotate的日志文件是由第三方RPM包软件产生的,需要在/etc/logrotate.d这个文件夹下新建一个配置文件,配置相关rotate规则。(UnleBen发现,其实如果你安装了第三方的软件包之后,在/etc/logrotate.d这个文件夹下就会自动创建了对应软件的rotate配置文件。)

Linux的logrotate是什么

UncleBen这里准备了一台干净的Centos7,在安装Httpd这个服务之前,我们来看一下/etc/logrotate.d这个文件夹下面都有哪些配置文件

[root@labhost ~]# ll /etc/logrotate.d/  total 20  -rw-r--r--. 1 root root  91 Apr 11  2018 bootlog  -rw-r--r--. 1 root root 224 Oct 30  2018 syslog  -rw-r--r--. 1 root root 100 Oct 31  2018 wpa_supplicant  -rw-r--r--. 1 root root 103 Nov  5  2018 yum  [root@labhost ~]#

我们现在安装一下httpd服务:

[root@labhost ~]# yum install httpd -y  Resolving Dependencies  --> Running transaction check  ---> Package httpd.x86_64 0:2.4.6-90.el7.centos will be installed  --> Finished Dependency Resolution  ......  Install  1 Package  Total download size: 2.7 M  Installed size: 9.4 M  Downloading packages:  httpd-2.4.6-90.el7.centos.x86_64.rpm                  | 2.7 MB  00:00:04  Running transaction check  Running transaction test  Transaction test succeeded  Running transaction    Installing : httpd-2.4.6-90.el7.centos.x86_64       1/1    Verifying  : httpd-2.4.6-90.el7.centos.x86_64       1/1  Installed:    httpd.x86_64 0:2.4.6-90.el7.centos  Complete!  [root@labhost ~]#

再去/etc/logrotate.d这个文件夹下看一下:

[root@labhost ~]# ll /etc/logrotate.d/  total 24  -rw-r--r--. 1 root root  91 Apr 11  2018 bootlog  -rw-r--r--. 1 root root 194 Aug  6  2019 httpd  -rw-r--r--. 1 root root 224 Oct 30  2018 syslog  -rw-r--r--. 1 root root 100 Oct 31  2018 wpa_supplicant  -rw-r--r--. 1 root root 103 Nov  5  2018 yum  [root@labhost ~]#

可以看到,安装httpd之后,自动创建好了针对httpd服务的log rotate配置文件,打开看看:

[root@labhost ~]# cat /etc/logrotate.d/httpd  /var/log/httpd1 * * * * /usr/sbin/logrotate /etc/logrotate.d/httpd

然后创建一个监控httpd文件夹下log文件的脚本:

[root@labhost ~]# cat monitorlog.sh  #!/bin/bash  while :  do      sleep 2      ls -hl /var/log/httpd/  done

我们来执行一下monitorlog.sh,来观察一下httpd的日志文件。注意:我这里是访问了Apache默认的站点,然后手动刷新Apache站点,来产生点access log,然后停止刷新页面。

[root@labhost ~]# ./monitorlog.sh  total 140K  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log  -rw-r--r--. 1 root root 12K Apr 24 14:09 error_log  total 140K  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log  -rw-r--r--. 1 root root 12K Apr 24 14:09 error_log  total 96K  -rw-r--r--. 1 root root   0 Apr 24 14:10 access_log  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 370 Apr 24 14:10 error_log  -rw-r--r--. 1 root root 12K Apr 24 14:10 error_log.1  total 96K  -rw-r--r--. 1 root root   0 Apr 24 14:10 access_log  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 370 Apr 24 14:10 error_log  -rw-r--r--. 1 root root 12K Apr 24 14:10 error_log.1  ...

我们可以看到:

  • 由于我设定的是每分钟执行一次logrotate,并且指定了httpd这个logrotate配置文件,所以我们配置的规则会每分钟被执行一次。

  • /var/log/httpd/这个文件夹下:

    • 只有access_log和error_log这两个文件。

    • Apr 24 14:09时,access_log文件大小是79K, error_log文件大小是12K。

  • 停止刷新页面,等待一分钟之后

  • /var/log/httpd/这个文件夹下:

    • 增加了两个文件:access_log.1和error_log.1

    • Apr 24 14:10时,access_log文件被清空,大小为0;而error_log不是空的,证明一直有error信息产生。

  • 为了验证notifempty这个参数是否生效,我们不刷新页面,再多等两分钟,然后从monitorlog.sh执行的结果来看:

  • access_log没有被rotate,因为在第一次access log文件被rotate之后,没有访问日志产生,它的大小为0,我们在配置文件里加了notifempty这个参数,意思就是如果为空,不做rotate。

Apr 24 14:13 /var/log/httpd/文件夹下信息:

total 96K  -rw-r--r--. 1 root root   0 Apr 24 14:10 access_log  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 370 Apr 24 14:13 error_log  -rw-r--r--. 1 root root 663 Apr 24 14:13 error_log.1  -rw-r--r--. 1 root root 663 Apr 24 14:12 error_log.2  -rw-r--r--. 1 root root 663 Apr 24 14:11 error_log.3

rotate 3这个参数:

  • 始终保留3份rotate的文件,那我们多等几分钟,再看看/var/log/httpd/这个文件夹下有哪些文件,即可验证。

  • rotate后的文件名:是以.数字结尾。

Apr 24 14:14 /var/log/httpd/文件夹下信息:

total 96K  -rw-r--r--. 1 root root   0 Apr 24 14:10 access_log  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 370 Apr 24 14:14 error_log  -rw-r--r--. 1 root root 663 Apr 24 14:14 error_log.1  -rw-r--r--. 1 root root 663 Apr 24 14:13 error_log.2  -rw-r--r--. 1 root root 663 Apr 24 14:12 error_log.3

Apr 24 14:15 /var/log/httpd/文件夹下信息:

total 96K  -rw-r--r--. 1 root root   0 Apr 24 14:10 access_log  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 370 Apr 24 14:15 error_log  -rw-r--r--. 1 root root 663 Apr 24 14:15 error_log.1  -rw-r--r--. 1 root root 663 Apr 24 14:14 error_log.2  -rw-r--r--. 1 root root 663 Apr 24 14:13 error_log.3

delaycompress这个参数:

  • 是必须要和compress一起使用的,单独使用无效,可以看到没有任何log文件被压缩处理,rotate前和rotate后的文件大小保持一致。

postrotate/endscript这个参数里的脚本:/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript

就是在log日志被rotate之后,需要重新reload httpd service,如果没有这个脚本会怎么样呢?我们来到/etc/logrotate.d/httpd里,把这3行注释掉。再到monitorlog.sh执行的结果来看看:

total 92K  -rw-r--r--. 1 root root   0 Apr 24 14:10 access_log  -rw-r--r--. 1 root root 79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 370 Apr 24 14:47 error_log.1  -rw-r--r--. 1 root root 663 Apr 24 14:47 error_log.2  -rw-r--r--. 1 root root 663 Apr 24 14:46 error_log.3

注释掉postrotate/endscript脚本后,我们发现:

  • error_log文件在执行rotate之后,新的error_log并没有被创建出来。

  • 我们来刷新一下页面,尝试产生新的access log,发现可以正常写入,大小有变化。 

total 136K  -rw-r--r--. 1 root root  38K Apr 24 14:52 access_log  -rw-r--r--. 1 root root  79K Apr 24 14:09 access_log.1  -rw-r--r--. 1 root root 5.4K Apr 24 14:52 error_log.1  -rw-r--r--. 1 root root  663 Apr 24 14:47 error_log.2  -rw-r--r--. 1 root root  663 Apr 24 14:46 error_log.3
  • 但是我们等待文件被rotate之后,再来观察一下,我们发现,access_log在被rotate之后,新的access_log文件同样没有被创建出来。 

total 136K  -rw-r--r--. 1 root root  38K Apr 24 14:52 access_log.1  -rw-r--r--. 1 root root  79K Apr 24 14:09 access_log.2  -rw-r--r--. 1 root root 5.4K Apr 24 14:52 error_log.1  -rw-r--r--. 1 root root  663 Apr 24 14:47 error_log.2  -rw-r--r--. 1 root root  663 Apr 24 14:46 error_log.3
  • 如果我们继续尝试刷新页面,发现access_log.1和error_log.1日志大小都会增长。这个就可以说明postrotate/endscript中间脚本的作用了,如果没有这个脚本,也就是在执行logrotate之后,没有reload httpd service,那么httpd服务会继续往旧的log日志中写信息,那么针对/var/log/httpd/*log后续的logrotate命令都不会被执行。为什么?

  • 配置文件里的文件路径写了:/var/log/httpd/*log,你是针对以log结尾的文件名。

  • 现在被rotate之后的文件名全都是以 . 数字结尾的。 

total 148K  -rw-r--r--. 1 root root  49K Apr 24 15:30 access_log.1  -rw-r--r--. 1 root root  79K Apr 24 14:09 access_log.2  -rw-r--r--. 1 root root 6.9K Apr 24 15:30 error_log.1  -rw-r--r--. 1 root root  663 Apr 24 14:47 error_log.2  -rw-r--r--. 1 root root  663 Apr 24 14:46 error_log.3

记不记得我们还有一个参数叫copytruncate,我们来试试,在没有postrotate/endscript脚本时,加上这个参数是什么效果。

version2:删除postrotate/endscript脚本,增加copytruncate

[root@labhost ~]# cat /etc/logrotate.d/httpd  /var/log/httpd/*log {      rotate 3      missingok      notifempty      sharedscripts      delaycompress      copytruncate  }

我们先stop httpd service,然后删除所有的access_log和error_log, 最后start httpd service,可以看到,httpd的日志文件正常产生了。

[root@labhost ~]# systemctl stop httpd  [root@labhost ~]# rm -rf /var/log/httpd/*  [root@labhost ~]# ll /var/log/httpd/  total 0  [root@labhost ~]#  [root@labhost ~]# systemctl start httpd  [root@labhost ~]# ll /var/log/httpd/  total 4  -rw-r--r--. 1 root root   0 Apr 24 15:47 access_log  -rw-r--r--. 1 root root 812 Apr 24 15:47 error_log  [root@labhost ~]#

接下来我们再刷新一下页面,产生一些access log和error log,等待几分钟,执行mornitorlog.sh来看一下:

  • access_log和error_log都可以正常rotate。

  • 新的access_log和error_log文件都可以被创建出来,并且可以正常写入log日志。 

total 60K  -rw-r--r--. 1 root root  17K Apr 24 15:51 access_log  -rw-r--r--. 1 root root  27K Apr 24 15:51 access_log.1  -rw-r--r--. 1 root root 2.3K Apr 24 15:51 error_log  -rw-r--r--. 1 root root 3.6K Apr 24 15:51 error_log.1  -rw-r--r--. 1 root root  812 Apr 24 15:48 error_log.2

所以,比起放在postrotate/endscript中间的reload httpd service脚本,我更喜欢用copytruncate这个参数。

version3:在version2的基础上,增加dateext参数

[root@labhost ~]# cat /etc/logrotate.d/httpd  /var/log/httpd/*log {      rotate 3      missingok      notifempty      sharedscripts      delaycompress      copytruncate      dateext  }

我们尝试访问页面,刷新,产生一些access log和error log。等待几分钟,我们执行monitorlog.sh来看一下,可以发现:

  • 最近一次被rotate log文件时以日期格式结尾的。

  • 我们的cron job规定每分钟执行一次logrotate,但是在添加dateext参数之后失效了。所以:

    • 如果你想要logrotate每天执行多次(大于一次),就不要添加dateext参数。

    • 如果你既想要logrotate每天执行多次(大于一次),还想rotate之后的文件以日期格式结尾,有一种方法就是添加dateformat .%s参数。 

total 144K  -rw-r--r--. 1 root root  30K Apr 24 16:55 access_log  -rw-r--r--. 1 root root 9.3K Apr 24 15:56 access_log.1  -rw-r--r--. 1 root root  17K Apr 24 15:52 access_log.2  -rw-r--r--. 1 root root  26K Apr 24 16:07 access_log-20200424  -rw-r--r--. 1 root root  27K Apr 24 15:51 access_log.3  -rw-r--r--. 1 root root 4.1K Apr 24 16:55 error_log  -rw-r--r--. 1 root root 1.3K Apr 24 15:56 error_log.1  -rw-r--r--. 1 root root 2.3K Apr 24 15:52 error_log.2  -rw-r--r--. 1 root root 3.6K Apr 24 16:07 error_log-20200424  -rw-r--r--. 1 root root 3.6K Apr 24 15:51 error_log.3

version4:在version3的基础上,增加dateformat -%Y%m%d%H.%s参数

[root@labhost ~]# cat /etc/logrotate.d/httpd  /var/log/httpd/*log {      rotate 3      missingok      notifempty      sharedscripts      delaycompress      copytruncate      dateext      dateformat -%Y%m%d%H.%s  }

我们再次尝试访问页面,刷新,产生一些access log和error log。等待几分钟,我们执行monitorlog.sh来看一下,可以发现:

  • 我们的cron job现在执行正常了,当log文件非空并且有更新时,可以被执行多次。

  • 被rotate之后的文件是以日期格式结尾的:

    • -横杠开头,接着时年月日时,然后句点. 最后是秒,但是最后的.s%是从1970年1月1日00:00:00到目前经历的秒数。 

total 172K  -rw-r--r--. 1 root root 7.5K Apr 24 17:41 access_log  -rw-r--r--. 1 root root  26K Apr 24 16:07 access_log-20200424  -rw-r--r--. 1 root root  25K Apr 24 17:32 access_log-2020042417.1587720721  -rw-r--r--. 1 root root  14K Apr 24 17:39 access_log-2020042417.1587721141  -rw-r--r--. 1 root root 3.8K Apr 24 17:40 access_log-2020042417.1587721201  -rw-r--r--. 1 root root 1.1K Apr 24 17:41 error_log  -rw-r--r--. 1 root root 3.6K Apr 24 16:07 error_log-20200424 -rw-r--r--. 1 root root 3.3K Apr 24 17:32 error_log-2020042417.1587720721  -rw-r--r--. 1 root root 1.8K Apr 24 17:39 error_log-2020042417.1587721141  -rw-r--r--. 1 root root  514 Apr 24 17:40 error_log-2020042417.1587721201

给大家留个问题:如果dateformat定义的格式是:-%Y%m%d%H,那么在日志文件非空并且持续更新的情况下,access_log和error_log会多久被rotate一次?

version5:在version4的基础上,增加size 50K参数

[root@labhost ~]# cat /etc/logrotate.d/httpd  /var/log/httpd/*log {      size 50K      rotate 3      missingok      notifempty      sharedscripts      delaycompress      copytruncate      dateext      dateformat -%Y%m%d%H.%s  }

这一次,我们先执行monitorlog.sh来看一下access_log和error_log的大小,再尝试访问页面,刷新,产生一些access log和error log,注意一下,因为我配置的size大小是50K,所以让access_log文件大小<50K,然后等待几分钟,观察monitorlog.sh输出,可以发现:

  • access_log和error_log文件都没有被rotate,因为他们的大小都没有超过50K,从下面的结果可以看出:

  • access_log大小是49K

  • error_log大小是6.6K 

total 132K  -rw-r--r--. 1 root root  49K Apr 24 18:04 access_log  -rw-r--r--. 1 root root  26K Apr 24 16:07 access_log-20200424  -rw-r--r--. 1 root root 1.9K Apr 24 17:56 access_log-2020042417.1587722161  -rw-r--r--. 1 root root 3.8K Apr 24 17:58 access_log-2020042417.1587722281  -rw-r--r--. 1 root root 7.5K Apr 24 17:59 access_log-2020042417.1587722341  -rw-r--r--. 1 root root 6.6K Apr 24 18:04 error_log  -rw-r--r--. 1 root root 3.6K Apr 24 16:07 error_log-20200424  -rw-r--r--. 1 root root  257 Apr 24 17:56 error_log-2020042417.1587722161  -rw-r--r--. 1 root root  514 Apr 24 17:58 error_log-2020042417.1587722281  -rw-r--r--. 1 root root 1.1K Apr 24 17:59 error_log-2020042417.1587722341
  • 现在我们继续刷新页面,让access_log大小>50K,观察monitorlog.sh输出,可以发现:

  • Apr 24 18:12时

    • logrotate被执行了一次,由于access_log文件大小>50K,所以就被rotate了。并保存为:access_log-2020042418.1587723121

    • 由于error_log文件大小<50K,所以此次logrotate忽略了这个文件。 

total 132K  -rw-r--r--. 1 root root  52K Apr 24 18:11 access_log  -rw-r--r--. 1 root root  26K Apr 24 16:07 access_log-20200424  -rw-r--r--. 1 root root 1.9K Apr 24 17:56 access_log-2020042417.1587722161  -rw-r--r--. 1 root root 3.8K Apr 24 17:58 access_log-2020042417.1587722281  -rw-r--r--. 1 root root 7.5K Apr 24 17:59 access_log-2020042417.1587722341  -rw-r--r--. 1 root root 7.1K Apr 24 18:11 error_log -rw-r--r--. 1 root root 3.6K Apr 24 16:07 error_log-20200424  -rw-r--r--. 1 root root  257 Apr 24 17:56 error_log-2020042417.1587722161  -rw-r--r--. 1 root root  514 Apr 24 17:58 error_log-2020042417.1587722281  -rw-r--r--. 1 root root 1.1K Apr 24 17:59 error_log-2020042417.1587722341  total 128K  -rw-r--r--. 1 root root    0 Apr 24 18:12 access_log  -rw-r--r--. 1 root root  26K Apr 24 16:07 access_log-20200424  -rw-r--r--. 1 root root 3.8K Apr 24 17:58 access_log-2020042417.1587722281  -rw-r--r--. 1 root root 7.5K Apr 24 17:59 access_log-2020042417.1587722341  -rw-r--r--. 1 root root  52K Apr 24 18:12 access_log-2020042418.1587723121  -rw-r--r--. 1 root root 7.1K Apr 24 18:11 error_log  -rw-r--r--. 1 root root 3.6K Apr 24 16:07 error_log-20200424  -rw-r--r--. 1 root root  257 Apr 24 17:56 error_log-2020042417.1587722161  -rw-r--r--. 1 root root  514 Apr 24 17:58 error_log-2020042417.1587722281  -rw-r--r--. 1 root root 1.1K Apr 24 17:59 error_log-2020042417.1587722341

version6:在version5的基础上,增加compress参数

[root@labhost ~]# cat /etc/logrotate.d/httpd  /var/log/httpd/*log {      compress      size 50K      rotate 3      missingok      notifempty      sharedscripts      delaycompress      copytruncate      dateext      dateformat -%Y%m%d%H.%s  }

我们继续刷新页面,让access_log大小>50K,观察monitorlog.sh输出,可以发现:

  • Apr 24 17:59时

    • logrotate被执行了一次,由于access_log文件大小>50K,所以就被rotate了,并且被做了压缩处理,保存为:access_log-2020042417.1587722341.gz

    • 被压缩之前大小是7.5K,被压缩后是398,不到1k,所以强烈推荐添加这个参数,节省空间啊!!!

    • 由于error_log文件大小<50K,所以此次logrotate忽略了这个文件。 

total 168K  -rw-r--r--. 1 root root    0 Apr 24 18:20 access_log  -rw-r--r--. 1 root root  26K Apr 24 16:07 access_log-20200424  -rw-r--r--. 1 root root  398 Apr 24 17:59 access_log-2020042417.1587722341.gz  -rw-r--r--. 1 root root 1.3K Apr 24 18:12 access_log-2020042418.1587723121.gz  -rw-r--r--. 1 root root  84K Apr 24 18:20 access_log-2020042418.1587723601  -rw-r--r--. 1 root root  19K Apr 24 18:19 error_log  -rw-r--r--. 1 root root 3.6K Apr 24 16:07 error_log-20200424  -rw-r--r--. 1 root root  257 Apr 24 17:56 error_log-2020042417.1587722161  -rw-r--r--. 1 root root  514 Apr 24 17:58 error_log-2020042417.1587722281  -rw-r--r--. 1 root root 1.1K Apr 24 17:59 error_log-2020042417.1587722341

感谢各位的阅读,以上就是“Linux的logrotate是什么”的内容了,经过本文的学习后,相信大家对Linux的logrotate是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: Linux的logrotate是什么

本文链接: https://lsjlt.com/news/281975.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Linux的logrotate是什么
    这篇文章主要讲解了“Linux的logrotate是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Linux的logrotate是什么”吧!登录到web服务上,上来 df -h 一把,果...
    99+
    2023-06-16
  • Linux的logrotate命令有什么用
    本篇内容介绍了“Linux的logrotate命令有什么用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Linux常用命令logrotate...
    99+
    2023-06-28
  • Linux的logrotate怎么使用
    本篇内容介绍了“Linux的logrotate怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!logrotate是个十分有用的工具,它...
    99+
    2023-06-28
  • Linux的logrotate命令怎么使用
    今天小编给大家分享一下Linux的logrotate命令怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。Linux常用...
    99+
    2023-06-28
  • Linux自带神器logrotate怎么用
    这篇文章主要为大家展示了“Linux自带神器logrotate怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux自带神器logrotate怎么用”这篇文章吧。logrotate 程序...
    99+
    2023-06-28
  • Linux日志处理命令logrotate怎么用
    这篇文章主要介绍了Linux日志处理命令logrotate怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Linux使用某些软件的时候会产生日志文件,而这些软件本身对日志...
    99+
    2023-06-27
  • Linux日志文件管家logrotate怎么用
    这篇文章给大家分享的是有关Linux日志文件管家logrotate怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志...
    99+
    2023-06-27
  • Linux的psdash是什么
    这篇文章主要介绍“Linux的psdash是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Linux的psdash是什么”文章能帮助大家解决问题。如果不是大型的企业级分布式监控,nagios就有...
    99+
    2023-06-27
  • 什么是linux
    本篇内容介绍了“什么是linux”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!接触linux是在大二的时候,那时候迷上了嵌入式linux,把...
    99+
    2023-06-13
  • Linux下的ldd是什么
    本篇内容主要讲解“Linux下的ldd是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux下的ldd是什么”吧!首先ldd不是一个可执行程序,而只是一个shell脚本ldd能够显示可执...
    99+
    2023-06-17
  • Linux中的&是什么
    本篇内容主要讲解“Linux中的&是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的&是什么”吧!实际上,命令的用法并不难,例如  mkdir、touc...
    99+
    2023-06-16
  • linux上的pid是什么
    在Linux中,pid是进程标识符(Process Identifier)的缩写,它是一个唯一标识符,用于标识正在运行的每个进程。每...
    99+
    2023-09-20
    Linux
  • Linux中的semaphore是什么
    这篇文章给大家分享的是有关Linux中的semaphore是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。Semaphore 通常我们叫它信号量, 可以用来控制同时访问特定资源的线程数量,通过协调各个线程,以...
    99+
    2023-06-28
  • linux中的rpm是什么
    本篇内容介绍了“linux中的rpm是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,rpm全称“Red Hat Pack...
    99+
    2023-06-25
  • linux grub指的是什么
    本篇内容介绍了“linux grub指的是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,grub是一个用于加载和管理系统...
    99+
    2023-06-30
  • linux中的cvs是什么
    这篇文章主要介绍“linux中的cvs是什么”,在日常操作中,相信很多人在linux中的cvs是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”linux中的cvs是什么”的疑惑有所帮助!接下来,请跟着小编...
    99+
    2023-07-02
  • linux raid指的是什么
    本文小编为大家详细介绍“linux raid指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux raid指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在linux中,RAID是指“磁盘...
    99+
    2023-07-02
  • linux more指的是什么
    本文小编为大家详细介绍“linux more指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“linux more指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在linux中,more的意思为“...
    99+
    2023-07-02
  • linux栈指的是什么
    今天小编给大家分享一下linux栈指的是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。在linux中,栈是一种串列形式的...
    99+
    2023-07-02
  • linux pic指的是什么
    这篇“linux pic指的是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“linux pic指的是什么”文章吧。在li...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作