Logrotate 命令的10个示例教程
有效管理日志文件是 Linux 系统管理员的一项基本任务。
在本文中,让我们讨论如何使用 logrotate实用程序执行以下日志文件操作。
- 当文件大小达到特定大小时轮换日志文件
- 轮换旧日志文件后继续将日志信息写入新创建的文件
- 压缩旋转的日志文件
- 为旋转的日志文件指定压缩选项
- 使用文件名中的日期轮换旧日志文件
- 日志轮换后立即执行自定义 shell 脚本
- 删除较旧的轮换日志文件
1.Logrotate配置文件
以下是 logrotate 正常工作应注意的关键文件。
/usr/sbin/logrotate – logrotate 命令本身。
/etc/cron.daily/logrotate - 这个 shell 脚本每天执行 logrotate 命令。
$ cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then
/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0
/etc/logrotate.conf – 所有日志文件的日志轮换配置都在此文件中指定。
$ cat /etc/logrotate.conf
weekly
rotate 4
create
include /etc/logrotate.d
/var/log/wtmp {
monthly
minsize 1M
create 0664 root utmp
rotate 1
}
/etc/logrotate.d – 在系统上安装单个软件包时,它们会将日志轮换配置信息放在此目录中。例如,yum log rotate的配置信息如下图所示。
$ cat /etc/logrotate.d/yum
/var/log/yum.log {
missingok
notifempty
size 30k
yearly
create 0600 root root
}
2. Logrotate size 选项:当文件大小达到特定限制时旋转日志文件
如果您希望每 1KB 轮换一个日志文件(例如,/tmp/output.log),请创建如下所示的 logrotate.conf。
$ cat logrotate.conf
/tmp/output.log {
size 1k
create 700 bala bala
rotate 4
}
此 logrotate 配置具有以下三个选项:
- size 1k – logrotate 仅在文件大小等于(或大于)此大小时运行。
- create - 旋转原始文件并使用指定的权限、用户和组创建新文件。
- rotate - 限制日志文件轮换的次数。因此,这将只保留最近的 4 个轮换日志文件。
在 logrotation 之前,以下是 output.log 的大小:
$ ls -l /tmp/output.log
-rw-r--r-- 1 bala bala 25868 2018-06-09 21:19 /tmp/output.log
现在,运行 logrotate 命令,如下所示。选项 -s 指定写入 logrotate 状态的文件名。
$ logrotate -s /var/log/logstatus logrotate.conf
注意:当您需要对某些文件进行日志轮换时,请准备 logrotate 配置并手动运行 logroate 命令。
在 logrotation 之后,以下是 output.log 的大小:
$ ls -l /tmp/output*
-rw-r--r-- 1 bala bala 25868 2018-06-09 21:20 output.log.1
-rwx------ 1 bala bala 0 2018-06-09 21:20 output.log
最终,这将继续跟踪旋转日志文件的设置。
- output.log.4.
- output.log.3
- output.log.2
- output.log.1
- output.log
请记住,日志轮换后,服务对应的日志文件仍会指向轮换文件(output.log.1)并继续写入。如果要每 5 MB轮换apache access_log 或 error_log ,可以使用上述方法
理想情况下,您应该修改 /etc/logrotate.conf 以指定特定日志文件的 logrotate 信息。
另外,如果你有巨大的日志文件,你可以使用:10 Awesome Examples for Viewing Huge Log Files in Unix
3. logrotate copytruncate选项:轮换旧日志文件后,继续将日志信息写入新创建的文件中。
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
}
copytruncate 指示 logrotate 创建原始文件的副本(即旋转原始日志文件)并将原始文件截断为零字节大小。这有助于属于该日志文件的相应服务可以写入正确的文件。
在处理日志文件时,您可能会发现sed 替代、sed 删除提示很有帮助。
4. Logrotate compress 选项:压缩旋转后的日志文件
如果您使用如下所示的 compress 选项,旋转后的文件将使用 gzip 实用程序进行压缩。
$ 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
5. Logrotate dateext 选项:轮换日志文件名中带有日期的旧日志文件
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
create 700 bala bala
dateext
rotate 4
compress
}
完成上述配置后,您会注意到旋转日志文件中的日期,如下所示。
$ ls -lrt /tmp/output*
-rw-r--r-- 1 bala bala 8980 2018-06-09 22:10 output.log-20180609.gz
-rwxrwxrwx 1 bala bala 0 2018-06-09 22:11 output.log
这一天只能工作一次。因为当它尝试在同一天下一次旋转时,较早旋转的文件将具有相同的文件名。因此,在同一天第一次运行后,logrotate 不会成功。
通常,您可以使用 tail -f 实时查看日志文件的输出。您甚至可以组合多个 tail -f 输出并将其显示在单个终端上。
6. Logrotate每月、每天、每周选项:每周/每天/每月轮换日志文件
为了每月轮换一次,
$ cat logrotate.conf
/tmp/output.log {
monthly
copytruncate
rotate 4
compress
}
如下所示为每周日志轮换添加每周关键字。
$ cat logrotate.conf
/tmp/output.log {
weekly
copytruncate
rotate 4
compress
}
为每天的日志轮换添加如下所示的 daily 关键字。您还可以每小时轮换一次日志。
$ cat logrotate.conf
/tmp/output.log {
daily
copytruncate
rotate 4
compress
}
7. Logrotate postrotate endscript 选项:日志轮换后立即运行自定义shell脚本
Logrotate 允许您在完成日志文件轮换后运行自己的自定义 shell 脚本。以下配置表示在logrotation后会执行myscript.sh。
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
postrotate
/home/bala/myscript.sh
endscript
}
8. Logrotate maxage 选项:删除旧的旋转日志文件
Logrotate 会在特定天数后自动删除旋转的文件。以下示例表明轮换的日志文件将在 100 天后被删除。
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
maxage 100
}
9. Logrotate missingok 选项:如果日志文件丢失不返回错误
当实际文件不可用时,您可以使用此选项忽略错误消息,如下所示。
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
rotate 4
compress
missingok
}
10. Logrotate compresscmd 和 compressext 选项:指定日志文件轮换的压缩命令
$ cat logrotate.conf
/tmp/output.log {
size 1k
copytruncate
create
compress
compresscmd /bin/bzip2
compressext .bz2
rotate 4
}
上面指定了以下压缩选项:
- compress – 表示应该进行压缩。
- compresscmd – 指定应该使用什么类型的压缩命令。例如:/bin/bzip2
- compressext – 指定旋转日志文件的扩展名。如果没有此选项,旋转文件的默认扩展名为 .gz。因此,如果您使用 bzip2 compressioncmd,请将扩展名指定为 .bz2,如上例所示。
- 点赞
- 收藏
- 关注作者
评论(0)