如何检查/proc/是否已挂载

如何检查/proc/是否已挂载

如何检查 /proc/ 是否已安装?

  • 不鼓励使用 /etc/mtab,因为它可能不一致。

  • 使用 /proc/mounts 也不是一个选项,因为如果 /proc/ 未安装,则可能不存在(尽管检查其存在可能是执行此检查的一种方法。

进行此检查的最佳方法是什么?

答案1

您可以运行mount不带任何参数的命令来获取当前安装的列表。该文件应该具有类似的数据,但正如您所说,如果文件系统混乱、不可写或另一个程序弄乱了它,则/etc/mtab这可能与实际安装的数据不一致。您可以通过要求列出所有类型的挂载来/etc获取有关 proc 挂载的特定信息,如下所示:mountproc

mount -l -t proc

编辑:看起来您可以使用将文件夹stat的设备/proc与 的设备进行比较/来至少判断是否安装了除根文件系统之外的其他内容:

[[ $(stat -c %d%D /proc) != $(stat -c %d%D /) ]] && echo "Something is mounted at /proc"

答案2

测试 是否存在/proc/mounts。运行mount是不好的,因为如果/proc没有安装,它将从/etc.

理论上可能还有其他东西/proc。但这在实践中极不可能:如果/proc/mounts存在并且/proc不是proc文件系统,那么您无论如何都不能信任有关您的环境的任何信息。如果你真的担心,你可以检查文件系统类型是否为proc:(df -PT /proc | awk 'NR==2 && $2=="proc" {print 1}'需要Linux实用程序df,Busybox中没有相应的选项)。相反,理论上,可能有一个 proc 文件系统安装在不同的位置;没有简单的方法可以使用 shell 命令找到它(df读取/proc/mounts枚举文件系统)。在实践中,只需检查/proc/mounts.

答案3

如果你想要(或多或少)保证 /proc 上的文件系统实际上是 proc 而不是其他一些文件系统或看起来像它的目录结构,你可以调用statfs()并检查类型,0x9fa0是 proc 的值。

答案4

mountpoint许多 Linux 安装上都有一个名为“avaiable”的工具。如果第一个参数是挂载点,则退出代码为 0。

相关内容