纠正错误 添加实例

mount

用于挂载Linux系统外的文件

补充说明

mount 命令的全称是mount a filesystem,它的功能是将一个文件系统或设备连接到一个已存在的目录上,这个目录称为挂载点(mount point)。

挂载指的是将设备文件中的顶级目录连接到 Linux 根目录下的某一目录(最好是空目录),访问此目录就等同于访问设备文件。如果不挂载,通过 Linux 系统中的图形界面系统可以查看找到硬件设备,但命令行方式无法找到。

例如当我们把 U 盘插入 Linux 后,系统也确实会给 U 盘分配一个目录文件(比如 sdb1),就位于 /dev/ 目录下(/dev/sdb1),因为根目录下的 /dev/ 目录文件负责所有的硬件设备文件。但此时无法通过 /dev/sdb1/ 直接访问 U 盘数据,访问此目录只会提供给你此设备的一些基本信息(比如容量)。我们要访问 U 盘内部目录,必须将 U 盘件与已有目录文件进行挂载。

挂载后,原来挂载点的内容将被隐藏,而文件系统或设备的内容将出现在挂载点上。挂载的文件系统或设备可以是本地的,也可以是远程的,例如NFS(网络文件系统)或SMB(服务器消息块)。

并不是根目录下任何一个目录都可以作为挂载点,由于挂载操作会使得原有目录中文件被隐藏,因此根目录以及系统原有目录都不要作为挂载点,会造成系统异常甚至崩溃,挂载点最好是新建的空目录。

mount 命令可以手动执行,也可以通过配置 /etc/fstab文件来自动执行。 /etc/fstab 文件是一个文本文件,它记录了系统中的所有可挂载的文件系统或设备,以及它们的挂载点和挂载选项。mount 命令可以根据这个文件来挂载所有或部分的文件系统或设备。

mount 命令还可以用来查询当前已挂载的文件系统或设备的信息,例如类型、选项、大小等。这些信息可以帮助你了解系统的磁盘使用情况和性能。

适用的Linux版本

mount 命令是一个通用的 Linux 命令,它可以在多数 Linux 发行版(如Debian、Ubuntu、Alpine、Arch Linux、Kali Linux、RedHat/CentOS、Fedora、Raspbian)的主要终端命令解释器(包括bash、zsh、csh、ksh、fish、tcsh)中使用。不同的Linux发行版可能支持不同的文件系统类型,例如ext4、xfs、btrfs等。你可以使用-t选项来指定要挂载的文件系统类型,也可以省略这个选项,让 mount 命令自动检测文件系统类型。

如果你的 Linux 系统没有安装 mount 命令,你可以使用以下命令来安装它:

[linux@bashcommandnotfound.cn ~]$ sudo apt update
[linux@bashcommandnotfound.cn ~]$ sudo apt install mount
[linux@bashcommandnotfound.cn ~]$ sudo dnf update
[linux@bashcommandnotfound.cn ~]$ sudo dnf install mount
[linux@bashcommandnotfound.cn ~]$ sudo yum update
[linux@bashcommandnotfound.cn ~]$ sudo yum install mount
[linux@bashcommandnotfound.cn ~]$ sudo dnf update
[linux@bashcommandnotfound.cn ~]$ sudo dnf install mount

基本语法

mount命令的基本语法格式如下:

mount [选项] ... 设备 | 目录
mount [选项] ... -t 类型 [-o 选项] 设备 目录

选项

mount 命令有很多选项,可以用来控制挂载的行为和效果。以下是一些常用的选项:

选项 说明
-a 挂载 /etc/fstab 文件中列出的所有文件系统或设备
-f 模拟挂载操作,不实际执行,用于测试和调试,通常会和 -v 一起使用。
-h 显示帮助信息
-l 显示已挂载的文件系统或设备的标签
-L 标签 挂载指定标签的文件系统或设备
-n 不更新 /etc/mtab 文件,用于只读文件系统或设备。在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
-r 以只读模式挂载文件系统或设备
-t 文件系统类型 挂载指定类型的文件系统或设备。Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。
-u 卸载指定的文件系统或设备
-v 显示详细的挂载信息,通常和 -f 用来除错。
-V 显示版本信息
-F 这个命令通常和 -a 一起使用,它会为每一个 mount 的动作产生一个行程负责执行。在系统需要挂上大量 NFS 档案系统时可以加快挂上的动作。
-o 选项 指定挂载选项,可以是一个或多个,用逗号分隔,例如ro,sync

-o 支持的特殊选项如下所示:

选项 功能
rw/ro 是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync 此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev 是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
auto/noauto 是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid 设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec 设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser 设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults 定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount 重新挂载已挂载的文件系统,一般用于指定修改特殊权限。

示例

以下是一些使用mount命令的实例,你可以根据自己的需求和环境来修改和尝试。

显示所有已挂载的文件系统或设备的信息

$ mount

显示指定目录的挂载信息

$ mount /home

显示指定类型的文件系统或设备的信息

$ mount -t ext4

挂载一个本地分区到一个目录上

# 我们可以使用 mkfs 命令把磁盘分区格式化为指定的文件系统,比如 ext4
$ mkfs -t ext4 /dev/sda1

然后把该分区挂载到 /mnt 目录
$ sudo mount /dev/sda1 /mnt

挂载一个远程NFS服务器上的目录到一个本地目录上

$ sudo mount -t nfs 192.168.1.100:/data /mnt

挂载一个USB闪存盘到一个目录上

$ sudo mount /dev/sdb1 /media/usb

挂载一个CD-ROM到一个目录上

$ sudo mount /dev/cdrom /media/cdrom

挂载一个ISO文件到一个目录上

$ sudo mount -o loop image.iso /media/iso

以只读模式挂载一个文件系统或设备

$ sudo mount -r /dev/sda1 /mnt

使用指定的挂载选项挂载一个文件系统或设备

$ sudo mount -o ro,sync /dev/sda1 /mnt

挂载 /etc/fstab 文件中列出的所有文件系统或设备

$ sudo mount -a

卸载一个已挂载的文件系统或设备

$ sudo umount /mnt

卸载一个已挂载的文件系统或设备,不管它是否正在使用

$ sudo umount -f /mnt

卸载一个已挂载的文件系统或设备,如果它正在使用,就延迟卸载,直到它不再使用

$ sudo umount -l /mnt

Linux mount命令的注意事项