mount
检查已挂载的文件系统。我也知道mount
和/etc/mtab
之间有些联系,但我不确定细节。在阅读了如何检查/ proc /是否挂载后,我感到更加困惑。我的问题是:如何获取最精确的已挂载文件系统列表?我应该只使用
mount
还是阅读/etc/mtab
的内容或/proc/mounts
的内容?什么会带来最值得信赖的结果?#1 楼
已安装文件系统的确定列表在/proc/mounts
中。如果系统上有任何形式的容器,则
/proc/mounts
仅列出当前容器中的文件系统。例如,在chroot中,/proc/mounts
仅列出安装点在chroot内的文件系统。 (请注意,有多种方法可以逃脱chroot。)/etc/mtab
中还列出了已挂载的文件系统。该列表由mount
和umount
命令维护。这意味着,如果您不使用这些命令(这种情况很少见),则不会记录您的操作(装载或卸载)。实际上,通常会在chroot中找到与系统状态完全不同的/etc/mtab
文件。另外,在chroot中执行的挂载将反映在chroot的/etc/mtab
中,而不反映在主/etc/mtab
中。 /etc/mtab
在只读文件系统上时执行的操作也未记录在其中。到mount命令行,有时可以以更易于理解的方式显示信息;例如,您看到请求的挂载选项(而/etc/mtab
列出了/proc/mounts
和内核默认值),并且绑定挂载在/proc/mounts
中显示为这样。评论
如果不能依赖它,那么挂载维护/ etc / mtab有什么意义?如果从/ proc / mounts挂载显示的信息不是更好吗?
–彼得·多布罗格斯特(Piotr Dobrogost)
2015年2月12日在10:31
@PiotrDobrogost / etc / mtab可以记录内核不跟踪的信息(例如最初请求的选项),并像这样显示绑定装载,而不是显示为设备的重复条目。但是,许多发行版都在使/ etc / mtab成为/ proc / mounts的符号链接。
–吉尔斯'所以-不再是邪恶的'
15年2月12日在10:41
但是,许多发行版都在使/ etc / mtab成为/ proc / mounts的符号链接。很高兴听到-添加此信息来回答会更好。您认为由内核跟踪请求的选项是否可行且有益?
–彼得·多布罗格斯特(Piotr Dobrogost)
15年2月12日在11:13
请注意,您需要取消转义/ proc / mounts的内容。如getmntent(3)页中所述,空格(\ 040),制表符(\ 011),换行符(\ 012)和反斜杠(\ 134)都需要特别处理。特别是如果启用了用户挂载,则使用这些路径时需要非常小心。
–埃里克
2015年8月31日15:50
另请参见使用命令findmnt的其他答案,这是自2010年以来的首选方法,并且可能是不久的将来挂载名称空间普及的唯一安全方法。
– Marki555
16年5月18日在19:46
#2 楼
从2.18版开始(2010年7月),util-linux
包含一个工具,可让您显示当前已安装的文件系统列表:使用-l
查看列表视图,使用-o
定义输出列(类似于lsblk
),使用-t
根据文件系统类型过滤结果等... findmnt
findmnt -lo source,target,fstype,label,options,used -t ext4
有关更多详细信息,请阅读
man
页面(和findmnt --help
获取可用列的列表)评论
该答案提供了最全面的列表,包括/ sys / fs / bpf,/ sys / fs / cgroup,/ sys / firmware / efi / efivars等最晦涩的挂载。有很多事情要经过,但grep是您的朋友。
– AveryFreeman
20年1月31日在15:44
非常感谢你。当您只希望在单个列表中了解目标时,这可以解决问题,这样,我可以在脚本中使用它,只需将目标名称的一部分添加到脚本中即可调用正确的设备。
–Geppettvs D'Constanzo
20 May 23'0:38
#3 楼
可能是因为距回答此问题已有5年了,所以情况发生了变化。cat /proc/mounts
会创建许多您不关心的信息。今天,恕我直言,我认为这是最终的解决方案。什么。例如,要进一步清理结果,可以使用以下命令排除“ tmpfs”的文件类型:。
上面的命令还将包括网络安装。
要了解更多信息,请使用: br />注意如果网络连接速度较慢,这可能要花几分钟! />
df -h --output=source,target
评论
您不必是root用户,但是某些字段/列(例如Label)将具有空数据,这可能仍然可以,因为问题想知道挂载了哪些文件系统。
–里克
16-2-18在23:55
Ubuntu的。但是,我刚刚发现了不使用root的“ findmnt”,它列出了网络安装的文件系统。我当时正在考虑编辑我的答案以包括该知识。
–里克
16 Feb 19'0:03
:-)我累了要给你的答案投票,但是直到我的代表15+
–里克
16年2月19日在0:07
顺便说一句,如果您尝试将--output与不接受这些选项的Ubuntu 12之类的东西一起使用,请在下面查看don_crissti的findmnt答案。
–马特·沙弗(Mat Schaffer)
16年6月8日在2:36
findmnt似乎需要更高的功能(已通过root测试; root具有所有功能)才能显示标签。
–ctrl-alt-delor
16年6月27日在16:11
#4 楼
大多数时候,mount
是最方便的方法。有关当前已挂载文件系统的完整且准确的列表,您应该阅读/proc/mounts
的内容(例如,使用cat /proc/mounts
)。 ,/
(/etc/mtab
命令从中读取以告诉您已安装的内容,并在可能的情况下(更改时更改了写入内容)写入该内容)不会更新以反映当前mount
(包含/
)已以只读方式安装。在这种情况下,运行/etc/mtab
通常会(错误地)告诉您mount
已以可读写方式安装。当前挂载的文件系统。这不要与/
混淆,/etc/mtab
包含应该在系统启动时自动挂载的文件系统列表。当然,如果
/etc/fstab
虚拟文件系统本身未挂载,则您无法读取其中的任何虚拟文件,其中包括/proc
。这种情况很少发生。在这种情况下,/proc/mounts
可能是查看已安装内容的最佳选择。
评论
您还应该阅读该问题的可接受答案:unix.stackexchange.com/questions/12040/…我忍不住链接到Linux中的/ etc / mtab?因为它涵盖了此处未给出答案的非Linux详细信息。