Answers:
%文件/ etc / mtab /etc/mtab:../proc/self/mounts的符号链接 %文件/ proc / mounts / proc / mounts:自我/ mounts的符号链接 %
/etc/mtab
是一种兼容机制。几十年前,Unix没有系统调用来读取现有的安装信息。取而代之的是,安装文件系统的程序应该协同并自愿维护一个表,/etc/mtab
以了解安装在何处的文件。
出于明显的原因,这不是理想的机制。
Linux获得了“ procfs”的概念,它获得的一件事是该表的内核维护版本,其形式为mounts
伪常规文件。从内核中读取安装信息的“系统调用”变成了对该文件的打开-读取-关闭序列,然后将结果从人类可读形式解析为机器可读形式(某些内容有些微妙,可以从两周前的错误报告中看到)。
/etc/mtab
因此,它已普遍地成为的符号链接/proc/mounts
,从而使以该名称进行硬连线的程序可以继续从该文件读取装载表,而装载和卸载文件系统的程序不再必须自己明确地进行操作以保持最新状态。(但是,如果其中某些文件仍然/etc/mtab
可以写成可写的常规文件,那么在mounts
某些极端情况下,其中缺少所有非内核内容的规范化信息并不是所需要的;尽管它们并没有超过的一般问题/etc/mtab
。)
如今,每个进程可以对挂载的东西有自己的单独视图,因此mounts
,procfs中每个进程都有单独的文件,每个进程自己的表都可以通过self
符号链接as 进行访问self/mounts
,并且/proc/mounts
现在也具有兼容性机制。(有趣mounts
的mounts
是,当前的Linux doco中没有记录每个进程或格式,尽管有类似的mountinfo
伪常规文件。)
SunOS / Solaris具有类似的机制。该/etc/mnttab
文件实际上是一个单文件文件系统,除了通过使用该文件的打开的文件描述符读取表之外,还可以通过read()
系统调用来监视挂载点的更改,poll()
并使用来获取更多信息ioctl()
。
在HP-UX中,/etc/mnttab
文件名也是如此,但是从版本11开始,它仍然是一个常规文件,其内容由系统实用程序协同维护。
AIX不会导出程序必须解析的可读文本表,并且没有等效文件。类似地,BSD getfsstat()
在FreeBSD和OpenBSD上具有完整的系统调用,用于程序以机器可读的形式从内核获取挂载表,而无需通过人类可读的中间形式将其编组。
/proc/self/mountinfo
在安装路径中用\ r 解析不正确。#35137。GNU coreutils错误。/proc/mounts
。 Documentation / filesystems / proc.txt。Linux 5.1。fstab-decode
。错误#567071。Debian的错误。getfsstat()
。 FreeBSD系统调用手册。2016-12-27。mtab(5)
还有旧时的信息:man.cat-v.org/unix_8th/5/mtab。
/proc/mounts
,/proc/self/mounts
它本身现在还是一种兼容机制;它仅显示中可用信息的子集/proc/self/mountinfo
。的格式/proc/self/mounts
中记录proc(5)
为相同的fstab(5)