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

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

情况是这样的:

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

自我分析: 这是由于写日志的进程保存了文件指针值(文件描述表项),虽然清空了文件但该文件指针值依然不变,所以产生文件空洞。
求助:用什么办法,可以备份当前日志内容,并减小日志文件大小,新内容又能被正确写入。

收起
参与55

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

zhutuzhutu存储工程师中国电子科技集团第五十二研究所

直接把现在的日志文件重名名掉。然后新写入的日志重新生成和之前名字一样日志文件。
可以先试验下,不知道可行不?

IT咨询服务 · 2017-11-13
浏览15205
  • 先感谢你的回答:但是我理解的是如果我改了名字重新建立一个相同名字的文件,貌似日志就写不进去了吧?
    2017-11-15
  • 好几天没看。后面解决了吗?
    2017-11-23
  • 这种做法是不可行的,因为前后两个文件的文件句柄不一致
    2019-02-24

回答者

zhutu
存储工程师中国电子科技集团第五十二研究所
擅长领域: 存储灾备服务器

zhutu 最近回答过的问题

回答状态

  • 发布时间:2017-11-13
  • 关注会员:9 人
  • 回答浏览:15205
  • X社区推广