logrotate

nginx 中logrotate日志管理工具详解
简介:
    logrotate是一个日志管理程序、用来删除旧的日志文件、并创建新的日志文件,可以根据日志的大小或者天数来转存

    它的执行由cron服务实现、在/etc/cron.daily目录中,有logrotate、它实际上是shell脚本,用来在指定时间启动rotate,所以、使用ps无法查看到logrotate进程

    它的运行分为3步:判断系统的日志文件、建立转储计划及参数、通过fron deamon运行logrotate
启动脚本放在 /etc/cron.daily/logrotate中

#!/bin/bash

test -x /usr/sbin/logrotate || exit 0
/usr/sbin/logrotate /etc/logrotate.conf

可以人工执行测试
/usr/sbin/logrotate -f /etc/logrotate.conf
相关参数解释
weekly             #每周执行一次
rotate 4           #保留4个日志文件
create             #rotate后,创建一个新的空文件
compress           #使用压缩、默认不使用
include  /etc/logrotate.d #使得这个目录下的配置文件生效

/var/log/wtmp {    #定义这个日志文件
    monthly        #每月轮转一次,覆盖上边的定义
    minsize 1M     #日志大于1M才会轮转
    create 0644 root utmp #定义新的日志文件的权限、属主
    rotate 1       #保留1个文件
    delaycompress  #延迟压缩和compress一起使用、转储的日志文件到下一次转储时才压缩
    nodelaycompress #转储同时压缩
    copytruncate   #用于还在打开中的日志文件、把当前日志文件备份并截断
    nocpoytruncate #备份日志文件、但不截断
    ifempty        #即使是空文件也转储
    errors address #转储时的错误信息发送到指定的email地址
    nomail         #转储时不发生日志文件
    olddir dir     #转储后的日志文件放入到指定目录、必须和当前日志文件在同一个文件系统
    noolddir       #转储后的文件和当前日志文件放到同一个目录
    prerotate/endscript #转储之前需要执行的命令可以放入、这两个关键字必须单独成行
    postrotate/endscript #转储之后需要执行的命令可以放入、这两个关键字必须单独成行
    size size      #日志大于指定大小时才转储
    sharescript    #共享脚本、下边的postrotate<s>endscript只执行一次即可
}
Logrotate并非一种病毒,而是一个Linux系统下的工具用于管理日志文件。它的主要功能是对大量产生的日志文件定期地进行转存、压缩以及删除旧的日志文件。 ### Logrotate的基本工作原理 - **周期性操作**:logrotate通过配置文件(通常位于 `/etc/logrotate.conf` 或者特定目录的配置文件内)指定对哪些日志文件进行操作,包括转存、压缩和删除等,同时定义了操作的时间间隔和规则。 - **转存和压缩**:当达到一定的大小限制或者日志文件已经保存了一段时间之后,logrotate会创建新的日志文件,并将旧的日志文件转存到其他位置并压缩成归档文件。例如,可以设置每天凌晨零点自动将所有日志文件转存并在7天后删除原始日志文件的同时保留压缩后的归档文件。 - **动态配置**:通过配置文件的模板和变量,logrotate可以根据实际需要动态调整日志文件的命名、存放路径、存储时间等策略,提供高度的灵活性和自适应能力。 ### 使用场景 - **日志文件管理**:在服务器环境中,日志文件通常会产生大量的数据,如果不加以管理,可能会占用过多的磁盘空间影响系统的性能。通过logrotate可以定期清理和压缩日志文件,节省磁盘空间。 - **维护记录**:logrotate能帮助维护长期的日志历史记录,这对于故障排查、性能分析等任务非常有用。 - **自动化处理**:通过crontab定时执行logrotate脚本,实现了日常维护的自动化,减少了人工干预的需求。 ### 安装与基本使用 要在基于Debian/Ubuntu的系统上安装logrotate,可以使用如下命令: ```bash sudo apt-get update && sudo apt-get install logrotate ``` 然后编辑默认配置文件 `sudo nano /etc/logrotate.conf` 来添加或修改具体的日志轮换规则。最后,你可以创建特定日志文件的配置,例如: ```bash sudo nano /etc/logrotate.d/syslog ``` 在这个文件中添加如下内容作为示例: ```ini # Rotate syslog daily and keep up to 5 backups. # /var/log/syslog { rotate 7 missingok notifempty compress } ``` 保存并退出编辑器,然后测试一下配置是否正确: ```bash sudo logrotate /etc/logrotate.d/syslog ``` 检查logrotate的工作状态和错误日志: ```bash sudo logrotate -d ``` 通过上述步骤,你可以有效地管理和优化你的系统日志文件,提升服务器的稳定性与可用性。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值