[Linux磁盘空间由于文件句柄的占用而无法释放

问题描述 投票:0回答:1

我有两个在Linux上运行的程序。程序A是一个应用程序,并使用log4j生成日志。一天生成的日志数量为50。文件名类似于xxx-2020-06-11-49.log,将新信息放入xx.log。当xx.log的大小达到10mb时,将生成一个新的日志文件xx-2020-06-11-50.log。这意味着xx.log的文件名更改为xx-2020-06-11-50.log。但是程序B是日志收集程序,它仅在添加新日志数据时收集日志,而不会调用close()方法。关闭文件句柄,并且有一个线程每3分钟关闭一次文件句柄。问题是当文件名在线程关闭文件之前更改时,close()方法将不会生效,并会导致很多文件被占用,当log4j删除无用的日志文件时,除非重新启动日志收集,否则磁盘空间将被占用编程。

java linux file log4j disk
1个回答
0
投票

Graceful shutdown of relevant process

首先,获取仍然由应用程序打开的已删除文件的列表:

  $ /usr/sbin/lsof | grep deleted
ora    25575 data   33u   REG      65,65  4294983680   31014933 /oradata/DATAPRE/file.dbf` (deleted)

lsof输出显示pid 25575的进程使用文件描述符(fd)使文件/oradata/DATAPRE/file.dbf保持打开状态>>

确定文件后,通过关闭受影响的进程来释放文件使用空间。如果无法正常关闭,请发出kill命令,通过引用PID强制停止它。

© www.soinside.com 2019 - 2024. All rights reserved.