Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux logrotate 命令。

1、命令简介

logrotate:对系统日志进行切割、压缩和邮件发送。

2、命令语法

logrotate [-dv] [--force] [-s|--state statefile] config_file ..

3、命令描述

logrotate 是一个用于管理 Linux 系统中日志文件的工具,它可以帮助自动进行日志文件的轮转、压缩和归档,以防止日志文件过大占用过多磁盘空间。通过配置 logrotate,可以确保日志文件的持续记录和存储,并控制日志文件的数量和大小。

logrotate 旨在简化生成大量日志文件的系统的管理。它允许自动进行日志切割、压缩、删除和邮件发送。每个日志文件可以按日、周、月或在其大小增长过大时进行处理。

通常情况下,logrotate 作为每日的 cron 作业运行。它不会在同一天内多次修改日志,除非该日志的标准是基于日志的大小,并且 logrotate 在一天内运行多次,或者使用 -f 或 -force 选项。可以在命令行上给出任意数量的配置文件。稍后的配置文件可以覆盖早前文件中的选项,因此 logrotate 配置文件的列出顺序很重要。通常应该使用单个配置文件,其中包含所需的任何其他配置文件。

4、命令选项

选项

描述

-v

打开详细模式。

-d

打开调试模式,同时意味着 -v。

在调试模式下,

不会对日志或logrotate状态文件进行更改。

-f, --force

告诉logrotate强制进行旋转,

即使它认为这是不必要的。

有时,在向logrotate添加新条目

或手动删除旧日志文件后,

这很有用,因为将创建新文件,

并且日志记录将继续正确。

-m, --mail [command]

告诉logrotate在发送日志时要使用的命令。

此命令应该接受两个参数:

1)消息的主题,

2)收件人。

然后,该命令必须从标准输入读取消息

并将其发送到收件人。

默认的邮件命令是/bin/mail -s。

-s, --state [statefile]

告诉logrotate使用替代状态文件。

如果针对不同的日志文件集

以不同的用户身份运行logrotate,

这将非常有用。默认状态文件为/var/lib/logrotate/status。

-usage

显示简短的使用消息。

5、使用示例

1)当文件大小达到特定限制时分割日志文件:

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        create 700 bala bala
        rotate 4
}

2)在分割旧日志文件后继续将日志信息写入新创建的文件:

$ cat logrotate.conf

/tmp/output.log {
         size 1k
         copytruncate
         rotate 4
}

3)压缩分割后的日志文件:

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        copytruncate
        create 700 bala bala
        rotate 4
        compress
}

压缩后的日志文件输出:

$ ls /tmp/output*
output.log.1.gz output.log

4)在日志文件名中使用日期分割旧日志文件:

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        copytruncate
        create 700 test test
        dateext
        rotate 4
        compress
}
After the above configuration, you’ll notice the date in the rotated log file as shown below.

$ ls -lrt /tmp/output*
-rw-r--r--  1 test test 8980 2010-06-09 22:10 output.log-20100609.gz
-rwxrwxrwx 1 test test    0 2010-06-09 22:11 output.log

这仅在一天内有效。因为当它在同一天尝试下一次分割时,之前分割的文件将具有相同的文件名。因此,在同一天的第一次运行之后,logrotate将无法成功运行。

5)每周/每天/每月分割日志文件。

/tmp/output.log {
        monthly
        copytruncate
        rotate 4
        compress
}
Add the weekly keyword as shown below for weekly log rotation.

$ cat logrotate.conf
/tmp/output.log {
        weekly
        copytruncate
        rotate 4
        compress
}
Add the daily keyword as shown below for every day log rotation. You can also rotate logs hourly.

$ cat logrotate.conf
/tmp/output.log {
        daily
        copytruncate
        rotate 4
        compress
}

6)在日志分割后立即运行自定义shell脚本:

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        postrotate
               /home/test/myscript.sh
        endscript
}

7)删除旧的分割日志文件:

logrotate会在特定天数后自动删除旋转的文件。分割的日志文件将在100天后删除。

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        maxage 100
}

8)如果日志文件丢失,不返回错误:

通过使用以下选项,可以忽略当实际文件不可用时的错误消息。

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        copytruncate
        rotate 4
        compress
        missingok
}

9)指定日志文件分割的压缩命令:

$ cat logrotate.conf

/tmp/output.log {
        size 1k
        copytruncate
        create
        compress
        compresscmd /bin/bzip2
        compressext .bz2
        rotate 4
}

推荐文档