定时任务
0 2 * * * /usr/sbin/logrotate -f /usr/local/nginx
虽然切割可以放到logrotate的目录下会自动调度,但是也可以自定义目录然后手动调用
nginx
/usr/local/tengine/logs/*.log {
compress
daily
copytruncate
rotate 180
olddir /usr/local/tengine/oldlogs
missingok
dateext
postrotate
/bin/kill -HUP `cat /usr/local/tengine/logs/nginx.pid 2> /dev/null` 2> /dev/null || true
endscript
}
nginx支持以下信号,感觉USER1更好,对nginx影响最小
TERM, INT fast shutdown
QUIT graceful shutdown
HUP changing configuration, keeping up with a changed time zone (only for FreeBSD and Linux), starting new worker processes with a new configuration, graceful shutdown of old worker processes
USR1 re-opening log files
USR2 upgrading an executable file
WINCH graceful shutdown of worker processes
tomcat
/data/succezsoft/tomcat/logs/catalina.out {
compress
daily
copytruncate
create 0644 root root
rotate 180
olddir /data/succezsoft/tomcat/oldlogs
missingok
dateext
sharedscripts
postrotate
chmod 644 /data/succezsoft/tomcat/oldlogs/*
endscript
}
这里只切割了catalina.out,如果想要切割访问日志,可以通配或者写两个,另外执行了修改权限的命令,因为这里是调用的root执行切割,其他用户没有权限访问了,所以归档文件给读个权限
手动滚动
logrotate配置文件写好后,一般是logrotate服务来调度,但是此服务的默认调度时间是凌晨2点左右,要想验证成功肯定不能等到两点,所以可以通过命令的方式来立即执行:
# --force 可以简写为 -f
logrotate --force /etc/logrotate.d/nginx
有了手动触发滚动,那么我们甚至不需要把配置文件放入logrotate的配置目录下,可以选择使用命令配合crontab的方式定时执行
logrotate调度时间修改
sed -i 's/START_HOURS_RANGE=3-22/START_HOURS_RANGE=1-3/g' /etc/anacrontab
sed -i 's/RANDOM_DELAY=45/RANDOM_DELAY=15/g' /etc/anacrontab