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
}