Linux如何自动挂载U盘
2017-07-19 14:48
1256 查看
某些场景下,服务器可能没有必要的键盘等输入设备、屏幕等输出设备。此时需要在没有人为干预的情况下实现当插入U盘或者硬盘后自动挂载,并执行某些脚本动作。以下是我的实践过程。
busybox (需要用到blkid)可以直接获取到设备的卷标,这样就可以指定挂载路径名称了。
如上, 通过规则定义U盘插入与拔出的动作即可,动作的具体实现可以在规则中编写,也可以通过指定执行脚本来实现。本文的规则中仅指定执行脚本。
规则如下:
1
2
如:
2
3
4
5
6
7
8
9
10
11
12
13
修改方式如下:
拷贝一份
编辑
重启即可。
必要组件
udev,udisksbusybox (需要用到blkid)可以直接获取到设备的卷标,这样就可以指定挂载路径名称了。
实现
规则编写
编写udev规则实现U盘插入时候的动作。规则文件写在/etc/udev/rules.d下。
如上, 通过规则定义U盘插入与拔出的动作即可,动作的具体实现可以在规则中编写,也可以通过指定执行脚本来实现。本文的规则中仅指定执行脚本。
规则如下:
ENV{DEVTYPE}="partition",RUN+="/lib/udev/automount.sh",ENV{REMOVE_CMD}="/lib/udev/autounmount.sh"1
1
脚本编写
将脚本文件写在/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 fi1
2
拔出动作脚本
在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 fi
自动执行动作脚本
这样,当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 done1
2
3
4
5
6
7
8
9
10
11
12
13
需要注意的问题
新版本的udev可能会遇到mount失效的问题,通过查询资料可知,udev的rules运行于独立的文件空间上,与用户的文件空间不同,因此及时挂载上了,用户也无法访问。因此需要将udev的运行方式改为共享。修改方式如下:
拷贝一份
/usr/lib/systemd/system/systemd-udevd.service到
/etc/systemd/system/(推荐)
编辑
/etc/systemd/system/将
MountFlags改为
shared
重启即可。
相关文章推荐
- Linux如何自动挂载U盘
- Linux下如何实现U盘、SD卡自动挂载功能
- Linux下如何实现U盘、SD卡自动挂载功能?
- linux如何挂载U盘
- linux 自动挂载U盘(1)
- linux 如何挂载U盘
- Linux系统下如何挂载FAT32的U盘
- mini2440开发板Linux系统自动挂载U盘与SD卡失败的解决方法
- linux下如何挂载硬盘 以及让硬盘开机自动挂载
- linux下如何挂载U盘,虚拟机下如何挂载U盘,Ubuntu下如何挂载U盘
- linux下如何挂载U盘,虚拟机下如何挂载U盘,Ubuntu下如何挂载U盘
- 脚本实现U盘自动挂载(linux)
- 添加Udev规则,让Linux自动挂载U盘(转载)
- Linux下实现U盘、SD卡自动挂载功能
- Linux小知识---------如何挂载U盘
- 在Linux上挂载Windows共享文件夹,如何开机自动挂载(mount)?
- linux嵌入式系统下实现U盘、SD卡自动挂载功能
- Linux下如何挂载NTFS格式U盘(替代法)
- Linux上的U盘自动挂载的底层详细过程
- Linux系统下如何挂载U盘,硬盘,光驱