u盘设备名需通过插拔前后对比lsblk或ls /sys/block确定新增块设备(如sdb),再用sudo fdisk -l /dev/sdb确认有效分区(如sdb1);dmesg | tail可查内核识别日志。

怎么确认U盘设备名是 /dev/sdb1 还是 /dev/sdc2
插上U盘后不直接挂载,先查设备节点。Linux不会自动告诉你“这是你的U盘”,得靠命令比对前后差异。最可靠的方法是插拔前后执行 lsblk 或 ls /sys/block,找新增的块设备(比如多出一个 sdb);再用 sudo fdisk -l /dev/sdb 看分区表,确认有效分区(通常是 sdb1)。dmesg | tail 也能看到内核识别日志,关键词是 “USB Mass Storage” 和 “Attached SCSI removable disk”。别只看 df -h——它只显示已挂载设备,新U盘还没挂载时不会出现。
挂载前必须创建挂载点目录,且权限要对
挂载点(比如 /mnt/usb)必须是空目录,且当前用户有读写权限。常见错误是:用 sudo mkdir /mnt/usb 创建后,目录属主是 root,普通用户后续无法写入文件。推荐做法是:
- 用
mkdir -p ~/usb在家目录建挂载点(不用 sudo,权限天然属于你) - 如果必须用系统路径(如
/mnt/usb),挂载后运行sudo chown $USER:$USER /mnt/usb - 别用已有文件或非空目录作挂载点——挂载后原内容不可见,卸载前也取不出来
mount 命令常用组合与文件系统类型指定
U盘格式不统一:Windows 格式化多为 vfat(FAT32),macOS 可能是 exfat,Linux 自用可能是 ext4。挂载时若不指定类型,mount 可能猜错或失败。务必显式加 -t 参数:
- FAT32/U盘常用:
sudo mount -t vfat /dev/sdb1 ~/usb -o uid=$UID,gid=$UID,umask=022(uid/gid解决权限问题,umask=022让新建文件可读写) - exFAT(需先装
exfat-utils和fuse-exfat):sudo mount -t exfat /dev/sdb1 ~/usb - NTFS(读写需
ntfs-3g):sudo mount -t ntfs-3g /dev/sdb1 ~/usb - 只读挂载防误操作:
-o ro加在最后
注意:mount 默认需要 root 权限;普通用户想免 sudo,得在 /etc/fstab 里配 user 或 users 选项(但涉及配置文件,风险略高,新手慎改)。
卸载必须用 umount,不能直接拔
拔U盘前必须运行 umount ~/usb 或 sudo umount /dev/sdb1。常见错误包括:
- 在挂载点目录下执行
umount—— 会报 “target is busy”,先cd出去 - 用
umount /dev/sdb(没带分区号)—— 失败,因为挂载的是分区(/dev/sdb1),不是整块盘 - 后台有进程占用(如终端在该目录、编辑器开着里面文件)—— 用
lsof +D ~/usb查,杀掉再卸载
卸载成功后,再物理拔出。现代桌面环境(GNOME/KDE)右键“安全移除”本质也是调 umount,但命令行更可控,也更暴露底层逻辑。
挂载这事看着简单,真正卡住人的往往不是命令本身,而是设备名判断不准、挂载点权限不对、文件系统类型没匹配上这三处。尤其 exfat 和 ntfs 需额外包,CentOS/RHEL 默认不带,Ubuntu 22.04+ 才预装 exfat-utils——这些细节不提前查,光背命令没用。











