清除日志文件不产生文件空洞

文件空洞:文件内容的大小小于文件磁盘占用的空间 java

产生缘由:如java使用
nohup java -jar xxx.jar > log.txt
方式启动java程序,但随着日志内容的增多,服务器磁盘空间不足,须要清理日志文件,因此可采用命令
echo '' > log.txt
此时日志文件内容被清空(注意,若是只是经过重命名或删除或vim编辑日志文件的方式清除文件内容时,因为程序没有中止,这样会致使输出的日志文件的fd仍是指向原来文件,那么新添加的日志内容将无法写到日志文件中去),经过命令
ll log.txt
发现文件磁盘占用空间变小了,由原来的几G变到几b,而后过几秒后有新的日志内容输入时,文件磁盘空间忽然变到原来的几G,这就是所谓的文件空洞的具体表现。打开日志文件发现内容清空,但实际上写入的位置没有重置到文件起始位置,为覆盖写;所以从新写放时都以null值占用,解决方法就是日志输出改为追加写
nohup java -jar xxx.jar >> log.txt
这样在清空文件时,写入位置置零,追加写入会从起始位置开始写入,不会产生文件空洞,固然清空日志文件内容时,若是日志文件重要,谨记先备份再清空。 vim

清空日志文件不产生文件空洞的正确作法就是服务器

  1. 启动程序时指定内容输出到日志文件中是以追加方式输出nohup java -jar xxx.jar > log.txt,固然不指定日志文件名,nohup默认就是追加到nohup.out中去
  2. 使用echo '' > log.txt命令把日志文件清空
相关文章
相关标签/搜索