logrotate
logrotate简介
logrorare一定程度上可以简化对会生成大量日志文件的系统的管理。logrotate可以实现自动轮替、删除、压缩和mail日志的功能。
执行命令
logrotate [-dv] [-f|--force] [-s|--state statefile] config_file ..
选项
# logrotate --help
Usage: logrotate [OPTION...] <configfile>
  -d, --debug              Don't do anything, just test (implies -v) 不做实际处理,仅调试
  -f, --force              Force file rotation 强制执行,忽视参数要求
  -m, --mail=command        Command to send mail (instead of `/bin/mail') 发送mail
  -s, --state=statefile    Path of state file 查看状态文件
  -v, --verbose            Display messages during rotation 轮替一次,并显示轮替过程信息
  --version                Display version information 显示logrotate版本
Help options:
  -?, --help                Show this help message
  --usage                  Display brief usage message
配置文件
/etc/logrotate.conf
/etc/logrotate.d
logrotate.conf是主要的参数文件,至于logrotate.d是一个目录,该目录里面的所有文件都会被logrotate.conf文件主动读入,若logrotate.d/里的文件没有指定详细设置,则以/etc/logrotate.conf这个文件里配置的默认值为准。
/etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly 每周轮替一次
weekly
# keep 4 weeks worth of backlogs 保留4个轮替日志
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 让/etc/logrotate.d目录下面配置文件内容参与轮替
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {   #轮替对象为/var/log/中的wtmp文件
    monthly       #每个月轮替一次
    create 0664 root utmp #创建新的日志文件 权限 所属用户 所属组
    minsize 1M    #日志大小大于1M后才能参与轮替
    rotate 1      #保留一个轮替日志文件
}
/var/log/btmp {
    missingok   #如果日志文件不存在,继续进行下一个操作,不报错
    monthly
    create 0600 root utmp
    rotate 1
}

/etc/logrotate.d
/etc/logrotate.d如上面说到的,在logrotate配置中扮演一个目录的角色,通过logrotate.conf中的配置include /etc/logrotate.d将/etc/logrotate.d目录包含进来,即将该目录下的文件内容加入到轮替任务中。
这里先简单介绍一下该目录下的文件内容及其格式,后面再对具体案例进行分析。
格式
日志文件路径 ...{ #多个文件绝对路径路径可以用空格、换行分隔,
  参数配置
}
/etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler      #作用域:/var/log/目录下的cron、maillog、messages、secure和spooler文件
{
    missingok        
    sharedscripts     #作用域下文件存在至少有一个满足轮替条件的时候,完成轮替后执行一次postrotate内的脚本。
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
常用参数
 
参数
描述
 

daily
每天轮替一次

weekly
每周轮替一次

monthly
每月轮替一次

yearly
每年轮替一次

rotate
保留几个轮替日志文件

ifempty
不论日志是否空,都进行轮替

notifempty
若日志为空,则不进行轮替

create
旧日志文件轮替后创建新的日志文件

size
日志达到多少后进行rotate

minsize
文件容量一定要超过多少后才进行rotate

nocompress
轮替但不进行压缩

compress
压缩轮替文件

dateext
轮替旧日志文件时,文件名添加-%Y %m %d形式日期,可用dateformat选项扩展配置。

nodateext
旧日志文件不使用dateext扩展名,后面序数自增如"*.log.1"

dateformat
只允许%Y %m %d和%s指定符。注意:系统时钟需要设置到2001-09-09之后,%s才可以正确工作

sharedscripts
作用域下文件存在至少有一个满足轮替条件的时候,执行一次prerotate脚本和postrotate脚本。

prerotate/endscript
在轮替之前执行之间的命令,prerotate与endscript成对出现。

postrotate/endscript
在轮替之后执行之间的命令,postrotate与endscript成对出现。

olddir
将轮替的文件移至指定目录下

missingok
如果日志文件不存在,继续进行下一个操作,不报错
 
举个自定义的例子
#/etc/logrotate.d/test
/test/log/*.log{
    daily
    rotate 2
    size 1M
    create
    compress
    missingok
    dateext
    olddir /test/rotate
}
每天对/test/log/目录下后缀为“.log”的且大小超过1MB的文件进行轮替,文件后缀为”-20171124“。压缩轮替后的文件,并将该文件移到”/test/rotate“目录下,一个原日志文件最多仅有2个对应轮替日志文件,若轮替日志大于设定的值则删除之前较早的轮替日志文件。创建新的日志文件。若/test/log/目录下文件名以”.log“结尾的文件不存在,不报错。
回到之前的话题,磁盘被日志撑满的话题,参考参数列表,我们会发现logrotate提供的轮替周期参数只能精确到天,以一天为轮替周期在一些情况下并不能满足我们的要求,这个时候该怎么办呢?
----这里可以搭配crontab(例行性工作),通过定时任务来执行logrotate命令,从而在不同情况实现对logrotate任务的自定义频率调用。
例行性工作的简单配置使用
cron执行时会读取/etc/cron.d这个目录的所有文件,按照文件中的设置来定时执行任务。该目录下新增的文件后,无需再重启crond服务。这里只简单地介绍该种定时任务配置。
#格式
*(分钟) *(小时) *(天) *(月) *(周几) 用户 命令
# 若分钟位值为 *,表示0-59之间的任意有效值;
# 若分钟位值为 1,表示每小时的第1分钟;
# 若分钟位值为 */5,表示每5分钟
# 若分钟位值为10,20 表示每小时的第10分钟和第20分钟
# 若分钟位值为10-12 表示每小时的第10、11、12分钟
#/etc/cron.d/cron_test
* */1 * * * root /usr/sbin/logrotate -v /etc/logrotate.d/test
每小时root用户会调用logrotate读取/etc/logrotate.d/test配置,执行一次。
 
 
 
 
# rotate log files monthly
monthly
# keep 4 weeks worth of backlogs
rotate 12
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# 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
    rotate 12
}
/var/log/btmp {
    monthly
    create 0600 root utmp
    rotate 12
}
/var/log/messages {
    monthly
    create 0600 root utmp
    rotate 12
}
/var/log/secure {
    monthly
    create 0600 root utmp
    rotate 12
}
/var/log/maillog {
    monthly
    create 0600 root utmp
    rotate 12
}

# system-specific logs may be also be configured here.
 
 
下面自己定义文件 在 crontab 定时每周一强制转存
#/etc/logrotate.d/log_cron   (文件名log_cron)
* * * * 1  /usr/sbin/logrotate -fv /etc/logrotate.d/log_cron
/var/log/wtmp {
    monthly
    dateext
    create 0664 root utmp
    rotate 12
}
/var/log/btmp {
    monthly
    dateext
    create 0600 root utmp
    rotate 12
}
/var/log/messages {
    monthly
    dateext
    create 0600 root utmp
    rotate 12
}
/var/log/secure {
    monthly
    dateext
    create 0600 root utmp
    rotate 12
}
/var/log/maillog {
    monthly
    dateext
    create 0600 root utmp
    rotate 12
}

logrotate linux 系统日志管理的更多相关文章

  1. :Linux 系统日志管理 日志转储

    Linux日志服务器设置 使用“@IP:端口”或“@@IP:端口”的格式可以把日志发送到远程主机上. 假设需要管理几十台服务器,每天的重要工作就是查看这些服务器的日志,可是每台服务器单独登录,并且查看 ...

  2. Linux 系统日志管理 rsyslogd配置文件

    rsyslogd配置文件  rsyslogd 服务是依赖其配置文件 /etc/rsyslog.conf 来确定哪个服务的什么等级的日志信息会被记录在哪个位置的.也就是说,日志服务的配置文件中主要定义了 ...

  3. Linux 系统日志管理

    Linux rsyslogd服务及启动方法 在 CentOS 6.x 中,日志服务已经由 rsyslogd 取代了原先的 syslogd.Red Hat 公司认为 syslogd 已经不能满足工作中的 ...

  4. Linux系统日志管理

    1.系统常用的日志(日志是用来记录重大事件的工具) /var/log/message      系统信息日志,包含错误信息等 /var/log/secure         系统登录日志 /var/l ...

  5. 【CentOS】Linux日常管理

    /////////////////////////目录///////////////////////////////////////// 一.日常监控指标相关 1.监控系统状态命令 2.查看系统进程 ...

  6. Linux系统日志及日志分析

    Linux系统日志及日志分析   Linux系统拥有非常灵活和强大的日志功能,可以保存几乎所有的操作记录,并可以从中检索出我们需要的信息. 大部分Linux发行版默认的日志守护进程为 syslog,位 ...

  7. rsync 通过服务的方式同步 linux系统日志 screen工具

    rsync 通过服务的方式同步 俩台机器传文件IP地址交叉编写. 主机1: 要编辑配置文件 /etc/rsyncd.conf rsyncd.conf样例 port=873                ...

  8. rsync通过服务同步、Linux系统日志、screen工具 使用介绍

    第8周5月15日任务 课程内容: 10.32/10.33 rsync通过服务同步10.34 linux系统日志10.35 screen工具 扩展1. Linux日志文件总管logrotate http ...

  9. Linux CentOS7 rsync通过服务同步、linux系统日志、screen工具

    一.rsync通过服务同步 rsyncd.conf配置文件详解 port:指定在哪个端口启动rsyncd服务,默认是873端口. log file:指定日志文件. pid file:指定pid文件,这 ...

  10. linux 内存管理——内核的shmall 和shmmax 参数

    内核的 shmall 和 shmmax 参数 SHMMAX= 配置了最大的内存segment的大小 ------>这个设置的比SGA_MAX_SIZE大比较好. SHMMIN= 最小的内存seg ...

随机推荐

  1. select标签如何实现 每个option传递多个值

    设计项目时 我们有时候会利用 <select>  <option  value="值1" > </option>  </select> ...

  2. @Html.DropDownList,绑定默认值

    后端代码: List<Area> list = new List<Area> { new Area { Id=1,Name="北京"}, new Area ...

  3. JS学习-异步JS

    异步JS setTimeout() 我们希望传递给setTimeout()中运行的函数的任何参数,都必须作为列表末尾的附加参数传递给它. function sayHi(who) { alert('He ...

  4. Cascader 级联选择器 数据不回显

    这次的问题原因主要是因为  数据存在于两张表  并且索引的字段不同   一个为id(int)一个为字符(string) 在做修改操作数据回显的时候会导致  后端返回的数组中一个为字符一个为bumber ...

  5. Django 之 ORM2

    1. 多表操作 1.1 创建模型 实例:我们来假定下面这些概念,字段和关系 作者模型:一个作者有姓名和年龄. 作者详细模型:把作者的详情放到详情表,包含生日,手机号,家庭住址等信息.作者详情模型和作者 ...

  6. SpringBoot整合mqtt协议,实现订阅topic并将消息存储到mysql数据库

    所需依赖如下: <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...

  7. rpm制作(简)

    yum -y install gcc prec-devel openssl-devel zlib-devel yum -y install rpm-build #生成工作目录 rpmdev-setup ...

  8. linux 安装 sysbench 和 使用

    安装 执行 下载命令 curl -s https://packagecloud.io/install/repositories/akopytov/sysbench/script.rpm.sh | su ...

  9. Linux服务器中了挖矿木马怎么办?-挖矿木马自助清理手册

    什么是挖矿木马 挖矿木马会占用CPU进行超频运算,从而占用主机大量的CPU资源,严重影响服务器上的其他应用的正常运行.黑客为了得到更多的算力资源,一般都会对全网进行无差别扫描,同时利用SSH爆破和漏洞 ...

  10. 华硕推出无风扇迷你电脑 PL64-明显是奔着软路由去的

    看这个配置,做客厅软路由再合适不过了.要是针对客厅的影音需求,CPU性能以及对大容量存储的刚需,这个还是有些欠缺. IT之家 12 月 17 日消息,华硕 PL 系列迷你电脑现已迎来最新一代机型,其中 ...