昨天线上服务器磁盘报警,登录后查看发现单个应用日志nohup.out达到了十几个G,明明做了logrotate日志切割,日志还是在不断的增大
logrotate配置文件如下
/data/tomcat/*/*.log {
su root root # centos7上不加这里会报错 error: skipping...Set "su" directive in config file to tell logrotate which user/group should be used for rotation.
rotate 15
daily
copytruncate
compress
notifempty
missingok
}
查看 /var/lib/logrotate.status 确实执行了日志切割,而且目录里有日志切割后的压缩文件,大小也正常
通过ll -h 查看日志文件有十几个G,但是用du -sh 文件发现只有几十M
发现启动命令中 nohup xxx.sh > nohup.out & 重定向输出用的是 > ,这种情况如果服务不停止,文件占用的磁盘空间不会被释放。就算手动执行 > nohup.out 清空了日志变成0kb,下一条日志开始写的时候还是会变成清空之前的大小。
解决方案:
把 > 替换成 >> 追加的形式,就可以被logrotate正常切割
比如nohup xxx.sh >> nohup.out &
本文介绍了一个线上服务器因nohup.out日志不断增大导致磁盘报警的问题及解决方案。通过调整日志输出方式从>改为>>实现logrotate正常切割,有效控制日志文件大小。
600

被折叠的 条评论
为什么被折叠?



