前言:
现时咱们对“apache224解析漏洞”可能比较关怀,你们都需要学习一些“apache224解析漏洞”的相关知识。那么小编也在网上收集了一些关于“apache224解析漏洞””的相关内容,希望同学们能喜欢,我们快快来学习一下吧!日志记录了程序运行时各种信息,通过日志可以分析用户行为,记录运行轨迹,查找程序问题。随着时间增长,日志越来越大,为了节省空间和整理方便,日志文件经常需要按时间或大小等维度分成多份,删除时间久远的日志文件,这也称为日志轮转、日志分割、日志切割等。
Logrotate 程序是Linux默认安装的日志文件管理工具,它可以用来轻松分割日志文件,压缩转存、删除旧的日志文件,并创建新的日志文件。
Logrotate(/usr/sbin/logrotate)由Linux计划任务crond(/usr/sbin/crond)定期驱动运行的,它的主配置文件位于:/etc/logrotate.conf。
logrotate命令格式如下:
logrotate [OPTION...] <configfile>
常用选项包括:
-d, --debug :debug模式,测试配置文件是否有错误。-f, --force :强制转储文件。-m, --mail=command :压缩日志后,发送日志到指定邮箱。-s, --state=statefile :使用指定的状态文件。-v, --verbose :显示转储过程。
既然Logrotate是一个普通的程序,那么我们就可以手动运行它,例如 -f 进行调试:
logrotate -f /etc/logrotate.d/nginxlogrotate -f /etc/logrotate.d/phpLogrotate配置文件介绍
Linux系统已经默认安装了logrotate,位于/usr/sbin/logrotate,配置文件包括:
/etc/logrotate.conf 主配置文件,其中语句include /etc/logrotate.d的作用是包含logrotate.d目录下的配置文件。/etc/logrotate.d/ 应用程序配置文件,保存一些应用的配置文件(Apache、Nginx、MySQL、PHP、Tomcat…)
# ll /etc/logrotate.dtotal 56-rw-r--r-- 1 root root 91 Mar 15 2022 bootlog-rw-r--r--. 1 root root 130 Feb 19 2018 btmp-rw-r--r--. 1 root root 160 May 12 2021 chrony-rw-r--r--. 1 root root 88 Apr 12 2021 dnf-rw-r--r-- 1 root root 93 Mar 15 2022 firewalld-rw-r--r-- 1 root root 194 Mar 25 2022 httpd-rw-r--r--. 1 root root 162 Mar 11 2022 kvm_stat-rw-r--r-- 1 root root 1977 Sep 22 2021 mysqld-rw-r--r-- 1 root root 203 Nov 10 2021 php-fpm-rw-r--r--. 1 root root 408 Apr 12 2021 psacct-rw-r--r--. 1 root root 155 Mar 16 2022 samba-rw-r--r--. 1 root root 237 Feb 2 2022 sssd-rw-r--r-- 1 root root 100 May 19 2021 wpa_supplicant-rw-r--r--. 1 root root 145 Feb 19 2018 wtmpLogrotater日志文件切割策略
主配置文件 logrotate.conf 定义了Logrotate的默认行为,例如轮转周期、保留几个日志文件、是否压缩等。
注意:include /etc/logrotate.d 语句还将导入/etc/logrotate.d/ 目录中的各个应用配置,例如Apache、yum等程序。如果想要轮转某个应用产生的日志文件,那么可以将它的日志轮转配置文件放到这个目录。
# ll -h /etc/logrotate.dtotal 28K-rw-r--r-- 1 root root 91 Aug 6 2019 bootlog-rw-r--r-- 1 root root 160 Sep 19 2018 chrony-rw-r--r-- 1 root root 194 Jan 8 2022 httpd-rw-r--r-- 1 root root 810 Oct 2 2020 mariadb-rw-r--r-- 1 root root 224 Sep 30 2020 syslog-rw-r--r--. 1 root root 100 Oct 31 2018 wpa_supplicant-rw-r--r-- 1 root root 103 Aug 8 2019 yum
文件的最后还举了两个示例,从这两个示例可以看出logrotate使用方法非常简单:
/var/log/wtmp 表示想要轮转的对象(这里是文件wtmp),除了单个文件以外,还支持通配符以表示多个文件,例如:
/var/log/news/*:/var/log/news/目录下的所有文件~/log/*.log:~/log/目录下所有.log文件
# cat /etc/logrotate.confweekly //默认每一周执行一次rotate轮转工作rotate 4 //保留多少个日志文件(轮转几次),默认保留四个,即指定日志文件删除之前轮转的次数,0 指没有备份create //自动创建新的日志文件,新的日志文件具有和原来的文件相同的权限;因为修改了日志文件名,因此要创建一个日志文件dateext //这个参数很重要!就是切割后的日志文件以当前日期为格式结尾,如xxx.log-20131216,如果注释掉,切割出来是按数字递增,即前面说的 xxx.log-1这种格式compress //是否通过gzip压缩转储以后的日志文件,如xxx.log-20131216.gz ;如果不需要压缩,注释掉就行include /etc/logrotate.d //导入/etc/logrotate.d/ 目录中的各个应用配置/var/log/wtmp { //仅针对 /var/log/wtmp 所设定的参数 monthly //每月一次切割,取代默认的一周 minsize 1M //文件大小超过 1M 后才会切割 create 0664 root utmp //指定新建的日志文件权限以及所属用户和组 rotate 1 //只保留一个日志}#这个 wtmp 可记录用户登录系统及系统重启的时间#因为有 minsize 的参数,因此不见得每个月一定会执行一次喔,要看文件大小。/var/log/btmp { missingok monthly create 0600 root utmp rotate 1}
Logrotate中其他可配置参数,具体如下:
compress //通过gzip 压缩转储以后的日志nocompress //不做gzip压缩处理copytruncate //用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。nocopytruncate //备份日志文件不过不截断create mode owner group //轮转时指定创建新文件的属性,如create 0777 nobody nobodynocreate //不建立新的日志文件delaycompress //和compress 一起使用时,转储的日志文件到下一次转储时才压缩nodelaycompress //覆盖 delaycompress 选项,转储同时压缩。missingok //如果日志丢失,不报错继续滚动下一个日志errors address //专储时的错误信息发送到指定的Email 地址ifempty //即使日志文件为空文件也做轮转,这个是logrotate的缺省选项。notifempty //当日志文件为空时,不进行轮转mail address //把转储的日志文件发送到指定的E-mail 地址nomail //转储时不发送日志文件olddir directory //转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统noolddir //转储后的日志文件和当前日志文件放在同一个目录下sharedscripts //运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本prerotate //在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行postrotate //在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行daily //指定转储周期为每天weekly //指定转储周期为每周monthly //指定转储周期为每月rotate count //指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5个备份dateext //使用当期日期作为命名格式dateformat //配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %H %M %S %V %ssize(minsize) logsize //当日志文件到达指定的大小时才轮转,可以指定单位为k或M,例如size 500k、size 100MApache日志
# cat /etc/logrotate.d/httpd/var/log/httpd/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript}
查看Apache日志目录,可以发现轮转规律与上面描述一致。
# ll -h /var/log/httpd/total 772M-rw-r--r-- 1 root root 76M Nov 7 21:16 access_log-rw-r--r-- 1 root root 166M Oct 16 03:14 access_log-20221016-rw-r--r-- 1 root root 158M Oct 23 03:27 access_log-20221023-rw-r--r-- 1 root root 177M Oct 30 03:34 access_log-20221030-rw-r--r-- 1 root root 196M Nov 6 03:43 access_log-20221106-rw-r--r-- 1 root root 36K Nov 7 21:05 error_log-rw-r--r-- 1 root root 352K Oct 16 03:14 error_log-20221016-rw-r--r-- 1 root root 211K Oct 23 03:27 error_log-20221023-rw-r--r-- 1 root root 302K Oct 30 03:34 error_log-20221030-rw-r--r-- 1 root root 142K Nov 6 03:43 error_log-20221106-rw-r--r-- 1 root root 0 May 22 03:34 ssl_access_log-rw-r--r-- 1 root root 32K May 15 10:46 ssl_access_log-20220522-rw-r--r-- 1 root root 0 May 22 03:34 ssl_error_log-rw-r--r-- 1 root root 1.9K May 15 10:50 ssl_error_log-20220522-rw-r--r-- 1 root root 0 May 22 03:34 ssl_request_log-rw-r--r-- 1 root root 42K May 15 10:46 ssl_request_log-20220522Nginx日志
# cat /etc/logrotate.d/nginx/var/log/weblog/*.log { daily //指定转储周期为每天 compress //通过gzip 压缩转储以后的日志 rotate 7 //保存7天的日志 missingok //如果日志文件丢失,不要显示错误 notifempty //当日志文件为空时,不进行轮转 dateext //使用当期日期作为命名格式,exp: nginx_access.log-20190120 sharedscripts //运行postrotate脚本 postrotate //执行的指令 if [ -f /run/nginx.pid ]; then kill -USR1 `cat /run/nginx.pid` fi endscript //结束指令}PHP-FPM日志
# cat /etc/logrotate.d/php-fpm/var/log/php-fpm/*log { missingok notifempty sharedscripts delaycompress postrotate /bin/kill -SIGUSR1 `cat /run/php-fpm/php-fpm.pid 2>/dev/null` 2>/dev/null || true endscript}参考文章