linux logrotate 配置及测试

2023-05-16

一、logrotate 配置

logrotate 
程序是一个日志文件管理工具。用来把旧的日志文件删除,并创建新的日志文件,我们把它叫做转储。我们可以根据日志文件的大小,也可以根据其天数来转储,这个过程一般通过 cron 程序来执行。
logrotate 
程序还可以用于压缩日志文件,以及发送日志到指定的E-mail 

logrotate 
的配置文件是 /etc/logrotate.conf。主要参数如下表:

参数 功能
compress 
通过gzip 压缩转储以后的日志
nocompress 
不需要压缩时,用这个参数
copytruncate 
用于还在打开中的日志文件,把当前日志备份并截断
nocopytruncate 
备份日志文件但是不截断
create mode owner group 
转储文件,使用指定的文件模式创建新的日志文件
nocreate 
不建立新的日志文件
delaycompress 
 compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 
覆盖 delaycompress 选项,转储同时压缩。
errors address 
专储时的错误信息发送到指定的Email 地址
ifempty 
即使是空文件也转储,这个是 logrotate 的缺省选项。
notifempty 
如果是空文件的话,不转储
mail address 
把转储的日志文件发送到指定的E-mail 地址
nomail 
转储时不发送日志文件
olddir directory 
转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 
转储后的日志文件和当前日志文件放在同一个目录下
prerotate/endscript 
在转储以前需要执行的命令可以放入这个对,这两个关键字必须单独成行
postrotate/endscript 
在转储以后需要执行的命令可以放入这个对,这两个关键字必须单独成行
daily 
指定转储周期为每天
weekly 
指定转储周期为每周
monthly 
指定转储周期为每月
rotate count 
指定日志文件删除之前转储的次数,指没有备份,指保留个备份
tabootext [+] list 
logrotate 不转储指定扩展名的文件,缺省的扩展名是:.rpm-orig, .rpmsave, v,  ~

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

二、缺省配置 logrotate

logrotate 
缺省的配置募/etc/logrotate.conf
Red Hat linux 
缺省安装的文件内容是:

# see "man logrotate" for details
# rotate log files weekly
weekly

# keep 4 weeks worth of backlogs
rotate 4

# send errors to root
errors root
# create new (empty) log files after rotating old ones
create

# uncomment this if you want your log files compressed
#compress
1
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d

# no packages own lastlog or wtmp --we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}

/var/log/lastlog {
monthly
rotate 1
}

# system-specific logs may be configured here


缺省的配置一般放在logrotate.conf 文件的最开始处,影响整个系统。在本例中就是前面12行。

第三行weekly 指定所有的日志文件每周转储一次。
第五行 rotate 4 指定转储文件的保留 4份。
第七行 errors root 指定错误信息发送给root
第九行create 指定 logrotate 自动建立新的日志文件,新的日志文件具有和
原来的文件一样的权限。
11 #compress 指定不压缩转储文件,如果需要压缩,去掉注释就可以了。

三、使用include 选项读取其他配置文件
include 
选项允许系统管理员把分散到几个文件的转储信息,集中到一个
主要的配置文件。当 logrotate logrotate.conf 读到include 选项时,会从指定文件读入配置信息,就好像他们已经在/etc/logrotate.conf 中一样。

13 include /etc/logrotate.d 告诉 logrotate 读入存放在/etc/logrotate.d 目录中的日志转储参数,当系统中安装了RPM 软件包时,使用include 选项十分有用。RPM 软件包的日志转储参数一般存放在/etc/logrotate.d目录。

include 
选项十分重要,一些应用把日志转储参数存放在 /etc/logrotate.d ,/etc/logrotate.d/里的每个文件配置会覆盖或追加该文件默认的参数,如果未指定参数,则采用logrotate.conf中默认的参数,比如logrotate.conf中,rotate默认为4, test(四章中的例子)文件指定rotate为50,将覆盖rotate配置,

典型的应用有:apache, linuxconf, samba, cron 以及syslog, squid

这样,系统管理员只要管理一个 /etc/logrotate.conf 文件就可以了。
logrotate 也可以直接执行 后直接跟配置文件就可以了。
-v 给出详细信息
-d debug模式,不更改日志文件内容 模拟执行
-f 强制执行,忽略所有规则

四、测试例子

例1:在/etc/logrotate.d/目录下,touch test,打开test文件输入以下:

/tmp/test.log{
    missingok
    create 0640 root root
    rotate 50
    size=1k
}

在/tmp/目录下touch test.log文件

执行命令: dd if=/dev/zero of=test.log bs=1024 count=1000

之后文件大小为1000K。

执行命令: logrotate -v /etc/logrotate.conf

ls -lrt查看/tmp目录多了一个test.log.1,大小是1000K

得出结论:

1.logrotate能设置文件大小,当超过这个大小时,是转储成另一个文件,而不是按size大小转储多个文件。

2.logrotate本身并不能时时监控文件大小,logrotate一般是在/etc/cron.daily中一天执行一次,所以当test.log超过配置的size大小时,并不能主动触发logrotate命令,这将造成logrotate滞后,当然,可以在crontab里1分钟执行一次,不过这样的话,整个日志系统效率会比较低。我们可以写个脚本一秒执行一次检测test.log文件大小。如下:

#!/bin/bash
a="/tmp/test.log"
while [[ -f $a ]];
do
sleep 1;
size=`ls -lrt $a | cut -d " " -f 5`
echo $size
if [ $size -ge 1024 ];
then
logrotate  /etc/logrotate.conf;
fi
done

例2:和例1一样,也是test.log,不过,在/etc/logrotate.d/test里改动如下:

/tmp/test.log{
    missingok
    create 0640 root root
    rotate 50
    size=1k
    prerotate
    chattr -a /tmp/test.log
    endscript
    postrotate
    chattr +a /tmp/test.log
    endscript
}

chattr +a属性是把该文件变成只能追加模式,不能截断和覆盖,也不能重命名,所以logrotate之前,需要chattr -a,logrotate之后再chattr +a加上该属性(见test文件)

执行:dd if=/dev/zero of=/tmp/111 bs=1025 count=1 生成1025字节的111文件

执行:cat /tmp/111 >> /tmp/test.log

执行:logrotate -vf /etc/logrotate.conf

test.log成功转储到test.log.1

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux logrotate 配置及测试 的相关文章

  • 重新链接匿名(未链接但打开)文件

    在 Unix 中 可以创建匿名文件的句柄 例如 使用 creat 创建并打开它 然后使用 unlink 删除目录链接 留下一个带有 inode 和存储的文件 但没有可能的方法重新打开它 此类文件通常用作临时文件 通常这就是 tmpfile
  • 删除 Python 中某些操作的 root 权限

    在我的 Python 脚本中 我执行了一些需要 root 权限的操作 我还创建并写入文件 我不想由 root 独占所有 而是由运行我的脚本的用户独占所有 通常 我使用以下命令运行脚本sudo 有办法做到上述吗 您可以使用以下方式在 uid
  • 设置 Vim 背景颜色

    当我尝试更改背景颜色时 vimrc或者直接在 Vim 中使用以下命令 set background dark 这根本不影响我的背景 也没有light选项 不过 当我运行 gvim 时 看起来还不错 有没有办法在不更改 Konsole 设置的
  • tar.gz 和 tgz 是同一个东西吗? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我创建了 tgz 文件tar czvf filecommand then 我最终得到了一个 tgz 文件 我想知道它和tar gz 之间的
  • 在Linux中创建可执行文件

    我计划做的一件事是编写 非常简单的 Perl 脚本 并且我希望能够在不从终端显式调用 Perl 的情况下运行它们 我明白 要做到这一点 我需要授予他们执行权限 使用 chmod 执行此操作非常简单 但它似乎也是一个稍微费力的额外步骤 我想要
  • 如何从 Linux 命令行确定 LCD 显示器是否打开

    如何通过 Linux 命令行判断计算机的显示器是否打开 关闭 我传统上认为显示器是仅输出的设备 但我注意到 Gnome 显示器首选项对话框具有 检测显示器 功能 这可以推广到确定显示器是否物理关闭吗 VESA DDC 连接是I2C http
  • C# - OPC-UA 服务器应用程序尚未在 Linux 计算机中创建 PKI 证书

    当我跑步时OPC UA serverWindows 机器中的 C 应用程序 然后 OPC UA 服务器已创建证书路径C ProgramData OPC Foundation pki own 并在此路径中生成一些证书 但是当我在中安装 OPC
  • 在Linux中将日期附加到文件名

    我想在文件名旁边添加日期 somefile txt 例如 somefile 25 11 2009 txt 或 somefile 25Nov2009 txt 或任何类似的内容 也许脚本或终端窗口中的某些命令可以执行 我正在使用Linux Ub
  • 如何从外部模块导出符号?

    我在内核源代码树之外进行编码 有两个模块 第一个printt有一个功能printtty 将字符串打印到当前 tty 以及第二个模块hello这会调用printtty 在初始化期间 我已经添加了EXPORT SYMBOL printtty 在
  • 如何从命令行执行 PHP 代码?

    我想执行单个 PHP 语句 例如if function exists my func echo function exists 直接使用命令行 无需使用单独的 PHP 文件 这怎么可能 如果您要在命令行中执行 PHP 我建议您安装phpsh
  • shell中基于正则表达式的颜色突出显示输出

    我想知道是否可以用颜色突出显示与某些字符串匹配的 shell 命令的输出 例如 如果我运行 myCommand 输出如下 gt myCommand DEBUG foo bar INFO bla bla ERROR yak yak 我希望所有
  • 尝试编译 git 但在 linux 中找不到 libcurl

    我想编译支持 http https 的 git 我有 ls usr include curl curlbuild h curl h curlrules h curlver h easy h mprintf h multi h stdchea
  • 如何从 Linux 命令行打开 Sublime Text 2 文件到选项卡,而不是新窗口

    我有 ST2 设置 这样我就可以执行 sublime file txt 它将在 ST2 窗口中打开 但是我怎样才能让它在当前打开的窗口的新选项卡中打开呢 尝试 Sublime 命令行帮助 subl 帮助 Sublime Text 2 内部版
  • 警告构建使用导出符号的内核模块

    我有两个内核模块 例如 modA 和 modB modA 导出一个符号EXPORT SYMBOL symA modB 使用它 我有标题modA h对于modA extern void symA int param and in modB c
  • 在linux中使用setcap [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 要将 cap net raw 功能添加到 例如 bin ping 我们使用以下命令 setcap cap net raw ep bin ping ep
  • 如何更改Linux服务器中的MySQL表名不区分大小写?

    我正在开发一个旧网站 该网站曾经托管在 Apple 服务器上 当它迁移到新的 Linux 服务器时 它停止工作 我很确定这是因为 php 脚本中使用的所有 MySQL 查询对于表名都有不同的大小写组合 我不知道为什么原始开发人员在创建表名或
  • 并发 I/O - 缓冲区损坏、块设备驱动程序

    我开发块分层设备驱动程序 所以 我拦截WRITE请求并加密数据 并解密数据end bio 例行程序 在处理和READ要求 所以在单流中一切正常 但是 如果尝试同时从两个或更多进程执行 I O 我会遇到缓冲区内容损坏的情况 我没有任何本地存储
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一

随机推荐

  • STorM32 BGC 三轴云台学习(一) 通信协议分析

    在淘宝买了个三轴云台 xff0c 基于STorM32 BGC的 xff0c 用调试软件控制没有问题 xff0c 但是自动飞行时候也得通过程序自动控制 xff0c 所以研究下官网协议 xff0c 并对其进行了翻译说明 参考链接Serial C
  • C语言链表结构的书写以及常见方法的书写

    1 链表结构的书写 typedef struct mylinklist int val 定义链表结点结构 struct mylinklist next mylinklist 2 定义创建链表的方法 xff08 此时为空链表 xff09 my
  • 力扣第8题,实现atoi函数,字符串转整数(c语言)

    c语言实现atoi函数功能 xff0c 同时是力扣的第8题 int myAtoi char s int len 61 strlen s i 61 0 flag 61 1 long long m 61 0 if s 61 61 NULL re
  • CentOS 初体验十二:wget下载文件

    转载请注明出处http blog csdn net zhaoyanjun6 article details 79108129 本文出自 赵彦军的博客 wget命令 wget命令用来从指定的URL下载文件 wget非常稳定 xff0c 它在带
  • [华为OJ--C++]075-判断两个IP是否属于同一子网

    题目描述 xff1a 子网掩码是用来判断任意两台计算机的IP地址是否属于同一子网络的根据 子网掩码与IP地址结构相同 xff0c 是32位二进制数 xff0c 其中网络号部分全为 1 和主机号部分全为 0 利用子网掩码可以判断两台主机是否在
  • 遥控三通直升机飞行原理简介

    首先我们了解一下什么是三通道 xff1f 通道其实就是遥控器对飞机的控制功能 xff0c 三通道就是说遥控器可以控制飞机的三种功能 xff01 其中 xff0c 一个通道就是控制上升下降 xff0c 另一个通道就是前进后退 xff0c 还有
  • 视觉SLAM十四讲:第2讲 初识SLAM

    第2讲 xff1a 初识SLAM 2 1 引言 定位和建图是感知的 内外之分 xff1a 前者任务是明白自身的状态 xff08 即位置 xff09 xff1b 后者任务是了解外在的环境 xff08 即地图 xff09 传感器 xff1a 携
  • 使用Python实现Hadoop MapReduce程序

    转自 xff1a 使用Python实现Hadoop MapReduce程序 英文原文 xff1a Writing an Hadoop MapReduce Program in Python 根据上面两篇文章 xff0c 下面是我在自己的ub
  • nginx1.15与tomcat8.5整合,多https域名指向同一tomcat服务

    一 安装nginx 1 安装依赖包 安装依赖之前检查是否已经安装这些依赖包 1 rpm包安装的 xff0c 可以用 rpm qa 看到 xff0c 如果要查找某软件包是否安装 xff0c 用 rpm qa grep 34 软件或者包的名字
  • 平衡车之角度环分析及调试

    1 直立环pd xff1a d参数的引入是为了抑制震荡 p xff0c 比例参数 xff0c 它的作用是反应了控制的响应速度 xff0c 过小的话平衡车表现是pwm明显不够直立不起来 xff0c 过大的话小车过于震荡 xff0c 震荡的时候
  • 平衡车之速度环分析及调试

    平衡车为什么只有角度环不够 xff0c 还需要速度环 xff1a 因为当角度环有偏差的时候 xff0c 根据角度环的pid是可以给小车输出pwm波维持小车平衡的 xff0c 但是小车要以什么样的速度维持平衡角度环是做不到的 xff0c 加上
  • 平衡车之转向环分析及调试

    转向环 xff1a 一般的控制系统单纯的 P 控制或者 PI 控制就可以了 xff0c 转向环就是这种 一般的控制系统 xff0c 对响应要求不高 xff0c 所以我们只使用 P 控制即可 int turn int encoder left
  • 倒立摆 角度环和位置环 分析以及参数整定

    倒立摆为什么有了角度环还必须有位置环呢 xff1f 答案是 xff1a 和平衡小车类比可得 xff0c 当只有角度环的时候 xff0c 倒立摆是可以对摆锤偏向做出pwm的反应的 xff0c 但是具体要反应合适程度到哪里 xff0c 还是应该
  • 关于新版XP光盘不能自动播放

    光驱自动运行 xff0c 首先要求在光盘中必须有一个autorun inf文件 xff0c 系统检测到这个文件后 xff0c 将调用AutoPlay来运行该文件 在autorun inf中写入了需要运行的光盘应用程序的路径 其次在注册表子键
  • 一、进程的概念、组成和特征

    一 进程与程序的区别 程序 xff1a 程序是静态的 xff0c 就是个存放在磁盘里的可执行文件 xff0c 就是一系列的指令集合 进程 xff1a 进程是动态的 xff0c 是程序的一次执行过程 xff0c 同一个程序多次执行会对应多个进
  • Ubuntu保存终端内容到日志

    Ubuntu保存终端内容到日志 1 在终端中执行 sudo script screen span class token punctuation span log 内容将保存到当前目录的screen log文件中 2 执行以下命令停止保存
  • 平衡小车从原理到实践

    平衡小车从原理到实践 作者 xff1a 公众号 xff1a 小白学移动机器人 关于内容 xff1a 参考很多网上大佬的博客加上自己的理解而成 xff0c 适合平衡车初学者和想要了解原理的小伙伴 1 平衡小车控制原理 先记住一句话 xff0c
  • 我手写了个SLAM算法!

    1 前言 前一段时间看过我文章的都知道 xff0c 我打算写一个SLAM源码阅读的文章 xff0c 然后 xff0c 我就去读了Gmapping的源码 xff0c 感受良多 xff0c 不足的地方是源码太乱了 xff0c 阅读起来真的不香
  • 我手写了个SLAM算法(二)!

    1 前言 看过之前两篇文章的大朋友们应该都知道 xff0c 我们在这里分享了SLAM算法gmapping的大刀阔斧删减版的源码和2D激光雷达运动畸变去除的源码 没看过的朋友可以点击下方文章查看 我手写了个SLAM算法 xff01 详解2D激
  • linux logrotate 配置及测试

    一 logrotate 配置 logrotate 程序是一个日志文件管理工具 用来把旧的日志文件删除 xff0c 并创建新的日志文件 xff0c 我们把它叫做 转储 我们可以根据日志文件的大小 xff0c 也可以根据其天数来转储 xff0c