Linux系统Logrotate服务介绍

本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Linux系统Logrotate服务介绍

   对于日常管理linux来说,日志文件显得非常的重要,它可以看出问题出现的点与相关错误信息,同样还可以根据信息来分析问题所出现的原因所在,是管理系统与服务必不可少的工具之一。

  logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/XXX日志文件每10天轮循,并删除超过1个月的日志。配置完后,logrotate的运作完全自动化,其实与系统的定时任务调用自定义脚本作用相同,它的运行也是定时任务来调用它的配置文件,从而实现上述效果的

安装命令非常简单(一般系统都会默认安装)

yum install logrotate crontabs

配置文件目录

/etc/logrotate.d

     #所有需要此功能的配置文件存放目录

[root@centos logrotate.d]# cat zabbix-agent

/var/log/zabbix/zabbix_agentd.log {

        daily 

        rotate 12

        compress

        delaycompress

        missingok

        notifempty

        create 0664 zabbix zabbix

}

参数说明

daily            #指定转储周期为每天

weekly         #指定转储周期为每周

monthly        #指定转储周期为每月

rotate 12       #转储的次数

compress       #通过gzip压缩转储以后的日志

nocompress   #不需要压缩时,用这个参数

copytruncate  

#用于还在打开中的日志文件,把当前日志备份并截断

nocopytruncate

#备份日志文件但是不截断

delaycompress  

#和compress一起使用时,转储的日志文件到下一次转储时才压缩

notifempty    

#如果是空文件的话,不转储

postrotate/endscript

#在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行

sharedscripts  运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置那么每个日志轮转后都会执行一次脚本

size size      

#当日志文件到达指定的大小时才转储,Size可以指定bytes(缺省)以及KB(sizek)或者MB(sizem)

1、系统的定时任务来运行/etc/cron.daily/logrotate

[root@ ~]# cat /etc/cron.daily/logrotate

#!/bin/sh

/usr/sbin/logrotate /etc/logrotate.conf

EXITVALUE=$?

if [ $EXITVALUE != 0 ]; then

    /usr/bin/logger -t logrotate “ALERT exited abnormally with [$EXITVALUE]”

fi

exit 0

2、每天通过执行/usr/sbin/logrotate命令调用/etc/logrotate.conf这个配置文件

[root@resources ~]# cat /etc/logrotate.conf

see “man logrotate” for details

rotate log files weekly

weekly

keep 4 weeks worth of backlogs

rotate 4

create new (empty) log files after rotating old ones

create

use date as a suffix of the rotated file

dateext

uncomment this if you want your log files compressed

#compress

RPM packages drop log rotation information into this directory

include /etc/logrotate.d

no packages own wtmp and btmp – we’ll rotate them here

/var/log/wtmp {

    monthly

    create 0664 root utmp


minsize 1M

    rotate 1

}

/var/log/btmp {

    missingok

    monthly

    create 0600 root utmp

    rotate 1

}

system-specific logs may be also be configured here.

3、最终调用/etc/logrotate.d下面的配置文件执行相关操作

[root@ logrotate.d]# cat vsftpd 

/var/log/vsftpd.log {

    # ftpd doesn’t handle SIGHUP properly

    nocompress

    missingok

}

/var/log/xferlog {

    # ftpd doesn’t handle SIGHUP properly

    nocompress

    missingok

}

需要注意的是当/etc/logrotate.conf读入文件时,include指定的文件中的参数会覆盖默认的参数

______________分享一个切割nginx日志的例子****__________

vim /etc/logrotate.d/nginx

##############################

for cut nginx log everyday

create by mingongge at 2017-05-31

##############################

/var/log/nginx/*.log {

daily

rotate 7

missingok

notifempty

dateext

sharedscripts

postrotate

   if [ -f /usr/local/nginx/logs/nginx.pid ];then

      kill -USR1 cat /usr/local/nginx/logs/nginx.pid

   fi

endscript

}

上下两个配置实现的效果相同,请各自参考按需配置

vim /servser/scripts/auto_cut_nginxlog.sh

#!/bin/sh

#####################################

this scripts for auto cut nginx log everyday

create by mingongge at 2017-05-31

#####################################

LOGDIR=/var/log/nginx/

DATE= date +%F

mv $LOGDIR/access.log $LOGDIR/nginx_access.${DATE}.log

mv $LOGDIR/error.log $LOGDIR/nginx_error.${DATE}.log

kill -USR1 cat /var/run/nginx.pid

cd $LOGDIR

find ./ -name “*.log” –mtime +30 |xargs -i mv {} /tmp/

#实际生产环境大家还是要小心使用rm命令,或者说最好禁用此命令改用mv(后悔药哦!!)

—————————————————————————

Linux系统Logrotate服务介绍 Linux系统Logrotate服务介绍

写文不易,扫码直接打赏民工哥吧!!

Linux系统Logrotate服务介绍
本人花费半年的时间总结的《Java面试指南》已拿腾讯等大厂offer,已开源在github ,欢迎star!

转载声明:转载请注明出处,本技术博客是本人原创文章

本文GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了6个月总结的一线大厂Java面试总结,本人已拿大厂offer,欢迎star

原文链接:blog.ouyangsihai.cn >> Linux系统Logrotate服务介绍


 上一篇
Redis集群生产环境高可用方案实战过程 Redis集群生产环境高可用方案实战过程
布署方案说明 1、sentinel负责对redis集群中的主从服务监控、提醒和自动故障转移 2、redis集群负责对外提供相关服务 Sentinel原理介绍 原理:          sentinel是一个分布式系统,可以在一个架构中运
2021-04-05
下一篇 
【Linux命令】     grep命令基本用法 【Linux命令】 grep命令基本用法
Linux基本命令  grep命令常见用法 grep命令可以说是Linux下面最常用的文本处理工具了,那么究竟我们可以用grep命令做什么了?首先我们想一想在windows下是我们是如何在整个文本中寻找我们所需的内容的,比如说我想在grep
2021-04-05