如何判断 Linux 机器上的目录是不是在 Java 中安装了外部文件系统?

Posted

技术标签:

【中文标题】如何判断 Linux 机器上的目录是不是在 Java 中安装了外部文件系统?【英文标题】:How to tell if a directory on a Linux machine has an external file system mounted to it in Java?如何判断 Linux 机器上的目录是否在 Java 中安装了外部文件系统? 【发布时间】:2018-05-04 09:34:29 【问题描述】:

我有三个独立的 Linux 服务器,它们在名为 /efs 的目录下挂载并共享同一个文件系统

我有一个使用此文件系统的 Java 应用程序,并且需要能够验证文件系统是否已正确挂载(否则,它会简单地写入本地机器上的 /efs 而不是共享存储知道) - 我如何在运行时从我的应用程序中检测到文件系统已安装到目录?

对不起,如果这是一个重复的问题。我确实确实试图找到这方面的信息,但我找不到明确的答案。

【问题讨论】:

您需要调用可以告诉您的 Linux 程序。这使它成为一个 Linux/Unix 问题。 【参考方案1】:

我看到了一些解决这个问题的方法:

    如果挂载在 /efs 的文件系统与根文件系统不同,您可以使用Files.getFileStore(path).type() 进行比较。 / 相同的文件系统将清楚地表明 /efs 挂载丢失。这假设 JDK >= 7。 读取并解析/proc/mounts 以查看挂载了哪些文件系统以及使用哪些选项。这与 Java 的 FileStore API 在后台使用的数据源相同,因此您可以直接从 JDK 源中获取解析逻辑。这将独立于 Java 版本。 在已挂载的文件系统上有一个文件,它永远不会在根文件系统上,然后可以通过Files.exists(path)new File(path).exists() 简单地检查它。这将独立于 Java 版本,甚至独立于 Linux。

【讨论】:

【参考方案2】:

回答我自己的问题 - 我刚刚想到在已挂载的文件系统中创建一个文件并简单地检查文件是否存在,避免任何依赖于操作系统的代码。

【讨论】:

以上是关于如何判断 Linux 机器上的目录是不是在 Java 中安装了外部文件系统?的主要内容,如果未能解决你的问题,请参考以下文章

linux shell 判断指定目录下文件或者文件夹最后修改时间是不是大于三天~

linux机器上的headless firefox浏览器是不是需要设置DISPLAY

linux 如何判断文件挂载是不是成功?根据啥样的返回值?

如何用Java判断一个文件或目录是不是存在

linux 标头占用了 EC2 机器上的大量磁盘空间。使用 rm 命令手动删除标题是不是安全?

linux 如何判断文件挂载是不是成功,根据啥样的返回值?