在linux系统中,管理日志可以使用一个非常实用的日志管理工具logrotate,以下就介绍下这个工具的用法。 一、logrotate初探
Logrotate基于cron运行,其脚本为:/etc/cron.daily/logrotate。
复制代码代码示例:
#!/bin/sh
/usr/sbin/logrotate /etc/logrotate.conf
实际运行时,Logrotate会调用配置文件/etc/logrotate.conf:
复制代码代码示例:
# see "man logrotate" for details
# keep 4 weeks worth of backlogs
# create new (empty) log files after rotating old ones
# uncomment this if you want your log files compressed
# RPM packages drop log rotation information into this directory
# no packages own wtmp -- we'll rotate them here # system-specific logs may be also be configured here.
此处的设置可以理解为Logrotate的缺省值。 二、Logrotate 应用举例
按天保存一周的Nginx日志压缩文件,配置文件为:/etc/logrotate.d/nginx。
复制代码代码示例:
/usr/local/nginx/logs/*.log {
daily dateext compress rotate 7 sharedscripts postrotate kill -USR1 `cat /var/run/nginx.pid` endscript }
可以用如下命令来手动执行:
复制代码代码示例:
shell> logrotate -f /etc/logrotate.d/nginx
执行时,进行相关调试,是个好习惯,比如:
复制代码代码示例:
shell> logrotate -d -f /etc/logrotate.d/nginx
BTW:类似的还有Verbose选项,输出详细信息,大家可以自行研究下。 三、Logrotate 使用答疑
问题1:sharedscripts主要用途有哪些?
问题2:rotate和maxage的区别有哪些?
问题3:为什么生成日志的时间是凌晨四点?
复制代码代码示例:
SHELL=/bin/bash
# run-parts
问题4:如何告诉应用程序重新打开日志文件?
Logrotate提供了一个名为copytruncate的指令,此方法采用的是先拷贝再清空的方式,整个过程中日志文件的操作句柄没有发生改变,所以不需要通知应用程序重新打开日 注意:在拷贝和清空之间有一个时间差,所以可能会丢失部分日志数据。这个还真是要好好琢磨下。 (责任编辑:IT) |