我通常用来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
但不会反映在 main 中/etc/mtab
。在/etc/mtab
只读文件系统上执行的操作也不会记录在那里。
/etc/mtab
您有时想要优先或额外进行咨询的原因/proc/mounts
是,因为它可以访问 mount 命令行,所以有时能够以更容易理解的方式呈现信息;例如,您会看到所请求的挂载选项(同时也/proc/mounts
列出了mount
和内核默认值),并且绑定挂载在/etc/mtab
.
答案2
自第 2.18 版起(2010 年 7 月) util-linux
包括一个允许您显示当前安装的文件系统列表的工具:
findmnt
您可以使用从默认树视图切换到列表视图-l
,使用定义输出列-o
(类似于lsblk
),使用基于文件系统类型过滤结果-t
等...
findmnt -lo 源、目标、fstype、标签、选项、使用 -t ext4
SOURCE TARGET FSTYPE LABEL OPTIONS USED
/dev/sda1 / ext4 ARCH rw,noatime,discard,data=ordered 17.6G
/dev/sdb2 /media/DATA ext4 DATA rw,noatime,discard,data=ordered 44M
作为2.27版还支持JSON
通过-J
或--json
开关输出:
findmnt -Jo 源、目标、标签、uuid -t ext4
{
"filesystems": [
{
"source": "/dev/nvme0n1p5",
"target": "/",
"label": "ARCH",
"uuid": "f21a53194-b02a-4e92-ad96-fdf9b8bc1db9",
"children": [
{
"source": "/dev/nvme0n1p6",
"target": "/run/media/data",
"label": "DATA",
"uuid": "321e288a-e67c-4b68-8d0b-89720210921f"
}
]
}
]
}
有关更多详细信息,请阅读该man
页面(并findmnt --help
获取可用列的列表)。
答案3
也许是因为这个问题被回答已经五年了,事情已经发生了变化。这cat /proc/mounts
会创建很多您不关心的信息。今天,恕我直言,我发现这是最终的解决方案。
df -h --output=source,target
当您阅读手册页时,您可以执行各种选项,但这就是您要做的。例如,要进一步清理结果,您可以使用以下命令排除“tmpfs”的文件类型:
df -hx tmpfs --output=source,target
df
适用于文件系统级别而不是文件级别。
上面的命令也将包括网络安装。
要查看更多信息,请使用以下命令:
df -hT
笔记如果网络连接速度较慢,这可能需要几分钟!
如果您没有或不关心已安装的网络连接(并且您具有 root 权限),那么这甚至更好:
sudo lsblk -f
答案4
如果由于某种原因无法再访问已安装的源(在我的情况下,我的域密码已过期),则安装点目录为空,并且(至少对我来说)安装不再显示在/proc/mount
.
我拼命地搜索任何此类安装,因为我怀疑有一些安装经常尝试使用旧凭据(每隔几秒)访问我的域帐户,从而频繁锁定该帐户。这就是为什么我首先发现这个问题。但这/proc/mounts
对我来说不是解决方案。
我知道我可能已经使用如下命令从 Ubuntu 服务器完成了一些安装,但不确定mount_point_dir
我可以使用什么,因为我的常规安装点似乎都没有安装。
$ mount.cifs <remotetarget> <mount_point_dir>
我终于从 syslog 中找到了一个验证,确实存在一些安装授权问题/var/log/syslog
。我在这个日志中看到了很多行,其中包含以下语句:
CIFS VFS: Free previous auth_key.response
Status code returned 0xc0000234 STATUS_ACCOUNT_LOCKED_OUT
这证实了我的怀疑,然后我可以通过查看/proc/fs/cifs
文件夹下的统计信息和调试数据来得到进一步的确认。
查看更多信息这里。
虽然我从未真正看到有关目标的信息mount_point_dir
,只看到了安装的源,但这足以让我解决我的问题,因为这促使我重新启动服务器,之后安装消失了,帐户锁定问题也消失了。