Java中的Linux用户磁盘配额检查

时间:2019-05-29 11:03:16

标签: java linux file diskspace

我有一个要求,我需要在使用Java的Linux系统上获得可用用户磁盘配额(而不是可用磁盘空间)。在这种情况下,可以限制用户磁盘配额(例如2GB),但可用磁盘空间却很大(例如TB)。

问题是我正在运行一些写入文件系统的Java应用程序。在用户磁盘配额用尽之前,我想主动通知用户有关磁盘配额的信息。 我尝试了各种解决方案,但是它们没有用。

  1. 普通Java File API getFreeSpace()和getUSableSpace()都给我可用磁盘空间,而不是可用磁盘配额。
  2. 尝试使用Sigar API,但在Sigar中找不到任何API,这给了我
  3. 尝试使用RandomAccessFile.setLength(SOME_THRESHOLD)检查SOME_THRESHOLD空间是否可用。但是它在Linux系统上也不起作用。它会创建稀疏文件,该文件实际上是创建的,长度为SOME_THRESHOLD,但不占用实际空间(块)。
  4. 尝试过配额Linux命令,它可以工作,但是我不想使用系统相关命令。这在某些口味上可能会出现问题。
  5. 其中一种方法是实际创建SOME_THRESHOLD大小的文件,但是每x秒执行一次将不必要地消耗CPU。

我的主要要求是,有什么方法可以给我免费的用户磁盘配额,或者允许我通过创建SOME_THRESHOLD大小的文件来检查可用空间,而无需占用CPU太多资源。
请帮忙。

谢谢。

0 个答案:

没有答案