学习啦>学习电脑>操作系统>Linux教程>

Linux系统自动挂载u盘方法步骤介绍

加城分享

  自动挂载命令可以帮我们临时解决一些问题,如服务器没有输出设备,工具等,那么自动挂载命令具体怎么用呢。下面由学习啦小编为大家整理了Linux系统自动挂载U盘的命令详解,希望对大家有帮助!

  Linux系统自动挂载u盘的命令详解

  格式:mount [-参数] [设备名称] [挂载点]

  其中常用的参数有:

  -a 安装在/etc/fstab文件中类出的所有文件系统。

  -f 伪装mount,作出检查设备和目录的样子,但并不真正挂载文件系统。

  -n 不把安装记录在/etc/mtab 文件中。

  -r 讲文件系统安装为只读。

  -v 详细显示安装信息。

  -w 将文件系统安装为可写,为命令默认情况。

  -t <文件系统类型> 指定设备的文件系统类型,常见的有:

  ext2 是linux目前常用的文件系统

  msdos MS-DOS的fat,就是fat16

  vfat windows98常用的fat32

  nfs 网络文件系统

  iso9660 CD-ROM光盘标准文件系统

  ntfs windows NT/2000/XP的文件系统

  auto 自动检测文件系统

  -o <选项> 指定挂载文件系统时的选项,有些也可写到在 /etc/fstab 中。常用的有:

  defaults 使用所有选项的默认值(auto、nouser、rw、suid)

  auto/noauto 允许/不允许以 –a选项进行安装

  dev/nodev 对/不对文件系统上的特殊设备进行解释

  exec/noexec 允许/不允许执行二进制代码

  suid/nosuid 确认/不确认suid和sgid位

  user/nouser 允许/不允许一般用户挂载

  codepage=XXX 代码页

  iocharset=XXX 字符集

  ro 以只读方式挂载

  rw 以读写方式挂载

  remount 重新安装已经安装了的文件系统

  loop 挂载“回旋设备”以及“ISO镜像文件”

  需要注意的是,挂载点必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。使用多个-o 参数的时候,-o 只用一次,参数之间用半角逗号隔开:

  # mount –o remount,rw /

  Linux系统自动挂载u盘的方法步骤

  规则编写

  编写udev规则实现U盘插入时候的动作。规则文件写在/etc/udev/rules.d 下。

  如上, 通过规则定义U盘插入与拔出的动作即可,动作的具体实现可以在规则中编写,也可以通过指定执行脚本来实现。本文的规则中仅指定执行脚本。

  规则如下:

  ENV{DEVTYPE}="partition",RUN+="/lib/udev/automount.sh",ENV{REMOVE_CMD}="/lib/udev/autounmount.sh"11

  脚本编写

  将脚本文件写在/lib/udev 下,根据上文规则,应该分别实现插入的动作脚本和拔出的动作脚本。

  插入动作脚本

  主要在于需要获取到设备的卷标,来确定挂载的路径(即$ID_FS_LABEL)

  #!/bin/sh

  mount_point=$ID_FS_LABEL

  if [ -z $mount_point ];then

  mount_point=${DEVNAME##*/}

  fi

  if [ -n $mount_point ];then

  mkdir -p /media/$mount_point

  mount -t $ID_FS_TYPE -o gid=100,dmask=000,fmask=111,utf8,flush,rw,noatime,users $DEVNAME /media/$mount_point

  fi

  1234567891012345678910

  拔出动作脚本

  在U盘拔出时候,及时删掉挂载的路径

  mount_point=$ID_FS_LABEL

  if [ -z $mount_point ];then

  mount_point=${DEVNAME##*/}

  fi

  if [ -n $mount_point ];then

  umount -l /media/$mount_point

  rm -r /media/$mount_point

  fi1234567812345678

  自动执行动作脚本

  这样,当U盘插入时,/media/ 下就会出现于卷标相同的文件夹,并挂载上了U盘。因此,需要实现U盘插入自动执行的话,通过轮询探测/media/ 下相应目录是否存在即可。

  如:

  UDISK=$1

  # ---------------main control area ---------------

  while (true)

  do

  # probe mounted disk

  if [ -e "$UDISK" ];then

  echo "Mounted device [$UDISK] found !"

  else

  echo "Device not found [$UDISK] !"

  fi

  echo "Sleep for sometime..."

  sleep 3s

  done

  1234567891011121314151612345678910111213141516

  补充:需要注意的问题

  新版本的udev可能会遇到mount失效的问题,通过查询资料可知,udev的rules运行于独立的文件空间上,与用户的文件空间不同,因此及时挂载上了,用户也无法访问。因此需要将udev的运行方式改为共享。

  修改方式如下:

  拷贝一份 /usr/lib/systemd/system/systemd-udevd.service 到 /etc/systemd/system/ (推荐)

  编辑/etc/systemd/system/ 将 MountFlags 改为 shared

  重启即可。

    3973523