请大家帮下忙,linux下怎样清空一个正在被写的文件,而不产生文件空洞?

情况是这样的:用于生产的系统(不能重启)所产生的日志文件不再根据时间进行切换,所有的日志写入同一个文件,该日志文件不断增大。现在尝试用crontab定时备份并清空文件。但是日志文件虽然内容被清空,但是文件大小不变(文件空洞),用more命令查看,发现文件前面一片空白,只有到文件底部...显示全部

情况是这样的:
用于生产的系统(不能重启)所产生的日志文件不再根据时间进行切换,所有的日志写入同一个文件,该日志文件不断增大。现在尝试用crontab定时备份并清空文件。但是日志文件虽然内容被清空,但是文件大小不变(文件空洞),用more命令查看,发现文件前面一片空白,只有到文件底部发现有新写入的数据。
自我分析: 这是由于写日志的进程保存了文件指针值(文件描述表项),虽然清空了文件但该文件指针值依然不变,所以产生文件空洞。
求助:用什么办法,可以备份当前日志内容,并减小日志文件大小,新内容又能被正确写入。

收起

查看其它 5 个回答yaoyao2019的回答

yaoyao2019yaoyao2019  测试工程师 , 南京大安电子商务

我在docker容器中查看tomcat的日志会遇到这种问题,现在目前的解决办法只有重启容器。

 2019-01-15
浏览6536

回答者

yaoyao2019测试工程师, 南京大安电子商务

核心数据库服务器选型优先顺序调查

发表您的选型观点,参与即得50金币。

回答状态

  • 发布时间:2019-01-15
  • 关注会员:9 人
  • 回答浏览:6536