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

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

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

收起

查看其它 5 个回答杨建旭的回答

杨建旭杨建旭  技术经理 , 中国人民银行清算总中心
sergio1899HelloWorDomain上善若水wjf等赞同了此回答

1)应用的问题还得应用来解。
日志机制有问题,改机制,比如写满一个10M,自动切换到下一个
2)把写日志的目录换一下,让应用把日志写到别的地方,然后你就可以备份原来的日志了。

 2017-11-10
浏览4863
  • 感谢您给的建议,问下您这边之前遇到过类似问题吗,您给的第一条建议我们这边是无法做到了,对于第二点您是建议我改一个日志目录试试吗?
    2017-11-10
  • 没遇到过这样的问题,因为这种应用的问题一般早就被改了
    2017-11-12

回答者

杨建旭技术经理, 中国人民银行清算总中心

回答状态

  • 发布时间:2017-11-10
  • 关注会员:9 人
  • 回答浏览:4863
  • 关于TWT  使用指南  社区专家合作  厂商入驻社区  企业招聘  投诉建议  版权与免责声明  联系我们
    © 2019  talkwithtrend — talk with trend,talk with technologist 京ICP备09031017号-30