Linux常用命令-logrotate

命令

logrotate

描述

rotates, compresses, and mails system logs
滚动更新系统日志

用法

1
logrotate [OPTION...] <configfile>

选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Options:
-d, --debug 不执行任何操作仅测试,配合-v选项使用
-f, --force 强制滚动更新日志
-m, --mail=command 指定mail命令来替换默认的/bin/mail
-s, --state=statefile 指定状态文件
-v, --verbose 显示详情

常用的日志配置参数
copytruncate 先创建日志副本,然后将原日志文件置零
weekly 每周滚动更新日志
daily 每天滚动日志
hourly 每小时滚动日志
missingok 如果某个日志文件不存在则继续执行其他日志规则
dateext 在备份文件名中增加日期字段,默认为数字递增
dateyesterday 使用昨天的日期命名
compress 压缩备份
notifempty 如果日志文件是空的,则不执行滚动
ifempty 即使日志是空的也执行滚动
rotate 5 保留的备份数量
size 100M 超过指定大小则执行滚动
sharedscripts 默认每滚动更新一个日志就会执行一次postrotate命令,加上此参数则在滚动更新完所有日志后执行一次命令
create 指定用户和用户组信息,如create www www
mail 指定收件人邮箱
prerotate/.../endscript 在这两个参数之间的命令将在日志滚动之前执行
postrotate/.../endscript 在这两个参数之间的命令将在日志滚动完成之后执行,如执行reload命令

注意

主配置文件/etc/logrotate.conf,状态文件/var/lib/logrotate/logrotate.status

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
# 更改系统日志的默认滚动配置
$ more /etc/logrotate.d/syslog
/var/log/cron
/var/log/maillog
/var/log/messages
/var/log/secure
/var/log/spooler
{
copytruncate
daily
missingok
dateext
compress
notifempty
rotate 5
size 100M
sharedscripts
postrotate
/bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
endscript
}
# 查看当前日志状态
$ more /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/maillog" 2021-3-20-21:0:0
"/var/log/secure" 2021-3-20-21:0:0
"/var/log/messages" 2021-3-20-21:0:0
"/var/log/cron" 2021-3-20-21:0:0
# 强制更新日志,可以看到日志状态时间更新了,并且在默认的日志目录中已经对当前日志进行了分割压缩
$ logrotate -f /etc/logrotate.d/syslog
$ more /var/lib/logrotate/logrotate.status
logrotate state -- version 2
"/var/log/maillog" 2021-3-21-22:42:46
"/var/log/secure" 2021-3-21-22:42:46
"/var/log/messages" 2021-3-21-22:42:46
"/var/log/cron" 2021-3-21-22:42:46
$ ll /var/log/*.gz
-rw------- 1 root root 1052 Mar 21 22:40 /var/log/cron-20210321.gz
-rw------- 1 root root 401 Mar 21 21:45 /var/log/maillog-20210321.gz
-rw------- 1 root root 207314 Mar 21 22:40 /var/log/messages-20210321.gz
-rw------- 1 root root 2279 Mar 21 21:56 /var/log/secure-20210321.gz