用日志文件在应用未关的时候被直接删除,空间不释放还会不停增涨,怎样在不重启应用的情况下释放空间?
我的做法是,把下面的封装一个shell脚本,这个脚本就是清空你的文件的,比如长时间执行的程序的log文件
做好这个shell脚本,加入定时里,一周清理一次或者2周,自定义
cat /dev/null > file_name
上面的做完还需要你配置一下你程序的start.sh,这个文件里面如果你使用了 比如类似下面的
$JAVA_HOME/bin/java $JAVA_OPTS -classpath $CONF_DIR:$CLASSPATH:. $MAIN_CLASS > ./console.log 2>&1 &
注意要将 【> ./console.log 】改成 【>> ./console.log】,不然会发生虽然清空了文件内容,但是文件显示的大小没有变化,
最后修改的start.sh类似下面的,也就是:
$JAVA_HOME/bin/java $JAVA_OPTS -classpath $CONF_DIR:$CLASSPATH:. $MAIN_CLASS >> ./console.log 2>&1 &
在应用未关的情况下,如果日志文件被直接删除,空间不会被释放并会不断增长。这可能是因为文件被打开,但是句柄没有被释放,所以空间不能被回收。以下是一些解决方案:
检查应用程序,确保所有文件句柄都被正确地关闭。
如果应用程序无法关闭文件句柄,则可以使用第三方工具如lsof来查找应用程序打开的所有文件句柄。使用lsof工具可以帮助你找到应用程序未关闭的文件句柄,然后手动关闭这些句柄以释放空间。
如果应用程序是运行在Linux系统上,你可以使用echo命令将空白字符写入特定的文件,以释放文件占用的空间。例如,可以使用以下命令将空白字符写入日志文件:
echo "" > /path/to/logfile
如果你不能关闭文件句柄,也不能使用echo命令释放空间,可以考虑使用logrotate等工具来管理日志文件。logrotate是一种广泛使用的Linux工具,可用于自动轮转和归档日志文件,以防止日志文件变得过大并占用过多磁盘空间。答案参考来自 https://www.wodianping.com/