常用的服务日志切割logrotate

                               创建:2022年6月28日 更新:2022年9月9日 85点热度 0人点赞 0条评论

定时任务

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

yuc

这个人很懒,什么都没留下

error: Content is protected !!