如何使用logrotate管理Linux的日志文件

日志文件包含系统内部执行情况的有用信息。在排除故障或服务器性能分析时往往需要检查日志。对于繁忙的服务器,日志文件可能会在短时间内变得非常大。这将成为一个问题,因为服务器会很快耗尽存储空间。此外,操作一个非常大的日志文件往往会非常棘手。

logrotate 是可以自动转储、压缩和删除旧日志文件的一个非常有用的工具。例如,你可以设置logrotate将日志文件 /var/log/foo的每30天转储一次,并且删除超过6个月的记录。一旦配置完成,logrotate可以完全自动化操作不需要进行人工交互

在主要的Linux发行版中logrotate包通常是默认安装的。如果由于某种原因,logrotate的不存在,您可以使用apt-get或者yum的命令来安装它。

Debian或者Ubuntu

# apt-get install logrotate cron

Fedora, CentOS或者RHEL

# yum install logrotate crontabs

logrotate的配置文件是/etc/logrotate.conf,一般不需要修改。可以在/etc/logrotate.d/目录下放入单独的配置文件定义本文档中需要的功能。

示例一

在第一个例子中,我们将创建一个10 MB的日志文件/var/log/log-file。我们将看到我们如何使用logrotate来管理这个日志文件。 我们首先创建一个10M的日志文件,并用随机位来填充它。

# touch /var/log/log-file# head -c 10M < /dev/urandom > /var/log/log-file

日志文件已经准备就绪,我们将配置logrotate转储这个日志文件。让我们开始创建转储所需要的logrotate配置文件。

# vim /etc/logrotate.d/log-file
/var/log/log-file {    monthly
    rotate 5    compress
    delaycompress
    missingok
    notifempty
    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript}

其中:

  • monthly:每月转储日志文件。其他可能的值是'daily', 'weekly', 'yearly'。
  • rotate 5:同一时间保存5个归档日志。对于第6个归档,最早的归档文件将被删除。
  • compress:转储完成后,转储的日志将使用gzip压缩。
  • delaycompress:需要与compress选项一起使用,delaycompress参数指示logrotate的不对最新的归档进行压缩。压缩将在下一个转储周期来进行。如果您需要访问的最新备份的存档,这是很有用的。
  • missingok:在转储过程中任何错误都会被忽略,例如,"未找到文件"。
  • notifempty:如果日志文件是空的将不会执行转储。
  • create 644 root root:logrotate归档时可以重命名原始日志文件然后创建一个新的日志文件并赋予与指定的权限。
  • postrotate/endscript:所有其他操作完成后会执行postrotate和endscript间定义的命令。在上面的例子中,处理rsyslogd将重新读取其配置后继续运行。

上面的模板是通用的,配置参数可以根据您的要求各不相同。不是所有的参数可能是必要的。

示例二

在这个例子中,我们想要只在日志文件大小增长超过50MB时转储日志文件。

# vim /etc/logrotate.d/log-file
/var/log/log-file {    size=50M    rotate 5    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript}

示例三

我们希望旧的日志文件根据归档日期进行命名,这可以通过添加dateext参数来实现。

# vim /etc/logrotate.d/log-file
/var/log/log-file {    size=50M    rotate 5    create 644 root root
    postrotate
        /usr/bin/killall -HUP rsyslogd
    endscript}

原文发布于微信公众号 - 马哥Linux运维(magedu-Linux)

原文发表时间:2015-05-05

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏前端之心

如何为 DNS 服务器添加反向解析记录

前一篇文章我们介绍了如何快速搭建 DNS 服务器,本文将向大家介绍如何向 DNS 服务器添加反向解析记录,支持将指定的 IP 解析到对应的域名。

1.6K50
来自专栏云计算教程系列

如何在Ubuntu 16.04上使用Apache或Nginx加密Tomcat 8连接

Apache Tomcat是一个Web服务器和servlet容器,旨在为Java应用程序提供服务。Tomcat经常用于生产企业部署和较小的应用程序需求,既灵活又...

51030
来自专栏云计算教程系列

使用Apache或Nginx加密Tomcat流量

Tomcat是由Apache软件基金会下属的Jakarta项目开发的一个Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Serv...

19760
来自专栏Jerry的SAP技术分享

如何给VirtualBox虚拟机的ubuntu LVM分区扩容

我在VirtualBox安装的ubuntu里安装Cloud Foundry时遇到错误信息,磁盘空间不够了:

39140
来自专栏从零开始学自动化测试

Selenium2+python自动化40-cookie相关操作

前言 虽然cookie相关操作在平常ui自动化中用得少,偶尔也会用到,比如登录有图形验证码,可以通过绕过验证码方式,添加cookie方法登录。 登录后换账号登录...

31780
来自专栏FreeBuf

保护SSH端口安全性的多种技巧介绍

SSH是一种可以让你在不安全的网络上,安全的运行网络服务的网络协议的.ssh的标准TCP端口为22端口,其最佳应用场景是用户远程登录至计算机系统。因此,SSH端...

17720
来自专栏月牙寂

k8s源码分析-----kubectl(1)api.RESTMapper

第一时间获取文章,可以关注本人公众号 月牙寂道长 yueyajidaozhang

46460
来自专栏python学习路

二、urllib进阶

Handler处理器 和 自定义Opener opener是 urllib.request.OpenerDirector 的实例,我们之前一直都在使用的ur...

31750
来自专栏JAVA烂猪皮

Zookeeper的简介和应用场景

Zookeeper是一个分布式协调服务;就是为用户的分布式应用程序提供协调服务 A、zookeeper是为别的分布式程序服务的 B、Zookeeper本身就...

15010
来自专栏LIN_ZONE

php项目,别人无法访问自己(windows 系统)上Apache服务器原因(转载)

2.windows默认带防火墙的,进入 控制面板-系统和安全-Windows 防火墙-允许的程序(win10系统的是:进入 控制面板-允许应用或功能通过Wind...

7730

扫码关注云+社区

领取腾讯云代金券