昨天线上服务器磁盘报警,登录后查看发现单个应用日志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 &