Linux------------logrotate日志切割工具
转发https://www.cnblogs.com/clsn/p/8428257.html
一、关于日志切割
日志文件包含了关于系统中发生的事件的有用信息,在排障过程中或者系统性能分析时经常被用到。对于忙碌的服务器,日志文件大小会增长极快,服务器会很快消耗磁盘空间,这成了个问题。除此之外,处理一个单个的庞大日志文件也常常是件十分棘手的事。
logrotate是个十分有用的工具,它可以自动对日志进行截断(或轮循)、压缩以及删除旧的日志文件。例如,你可以设置logrotate,让/var/log/foo日志文件每30天轮循,并删除超过6个月的日志。配置完后,logrotate的运作完全自动化,不必进行任何进一步的人为干预。
二、配置文件详解
centos系统从7.2以后默认自带logrotate,不需要安装
主配置目录:/etc/logrotate.conf
配置目录:/etc/logrotate.d
2.1 配置文件说明
2.2 常见配置参数
2.3 定时任务
示例:
[root@clsn6 ~]# 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
三、 nginx日志模板
线上使用模板:
[root@clsn nginx]# cat /etc/logrotate.d/nginx
/var/log/nginx/*.log {
daily
rotate 5
missingok
notifempty
create 644 www www
postrotate
if [ -f /var/run/nginx.pid ]; then
kill -USR1 `cat /var/run/nginx.pid`
fi
endscript
}
3.1 关于USR1信号解释
摘自: http://www.xuebuyuan.com/323422.html
USR1亦通常被用来告知应用程序重载配置文件;例如,向Apache HTTP服务器发送一个USR1信号将导致以下步骤的发生:停止接受新的连接,等待当前连接停止,重新载入配置文件,重新打开日志文件,重启服务器,从而实现相对平滑的不关机的更改。内容摘自wiki:http://zh.wikipedia.org/wiki/SIGUSR1和SIGUSR2
对于USR1和2都可以用户自定义的,在POSIX兼容的平台上,SIGUSR1和SIGUSR2是发送给一个进程的信号,它表示了用户定义的情况。它们的符号常量在头文件signal.h中定义。在不同的平台上,信号的编号可能发生变化,因此需要使用符号名称。
kill -HUP pid 或者 killall -HUP pName:
其中pid是进程标识,pName是进程的名称。
如果想要更改配置而不需停止并重新启动服务,可以使用上面两个命令。在对配置文件作必要的更改后,发出该命令以动态更新服务配置。根据约定,当你发送一个挂起信号(信号1或HUP)时,大多数服务器进程(所有常用的进程)都会进行复位操作并重新加载它们的配置文件。