Linux下实现U盘自动挂载自动卸载

U盘的自行挂载须要依赖udev模块,目前操做系统已默认安装。php

udev的工做流程如图所示。html

因此要作的一共分为三步:linux

一、修改配置文件(udev.conf)

修改配置文件主要是修改规则文件的所在目录,默认是在/etc/udev/rules.d下。操作系统

udev_root="/dev/"

udev_rules="/etc/udev/rules.d/"

udev_log="err"

上面的第二行表示udev规则存储的目录,这个目录存储的是以.rules结束的文件。
你的/etc/udev/rules.d下面可能有好几个udev规则文件,这些文件一部分是udev包安装的,另一部分则是多是别的硬件或者软件包生成的。好比在Fedora Core 5系统上,sane-backends包就会安装60-libsane.rules文件,另外initscripts包会安装60-net.rules文件。这些规则文件的文件名一般是两个数字开头,它表示系统应用该规则的顺序。code

二、添加规则

好比,在/etc/udev/rules.d/目录下新建文件11-usb-mount.rules,而后写入如下规则htm

ACTION!="add",GOTO="farsight"
KERNEL=="sd[a-z][0-9]",RUN+="/sbin/mount-usb.sh %k"
LABEL="farsight"

ACTION!="remove",GOTO="farsight"
SUBSYSTEM!="block",GOTO="farsight"
KERNEL=="sd[a-z][0-9]",RUN+="/sbin/umount-usb.sh %k"
LABEL="farsight"

RUN+属性指定了当添加设备或移除设备时,udev会去调的脚本。%k就是相似sdd1,sda3这样的名字。blog

三、编写脚本

好比设备添加脚本 /sbin/mount-usb.ship

#!/bin/sh
mkdir -p /mnt/$1
mount -t vfat /dev/$1 /mnt/$1
sync

设备移除脚本/sbin/umount-usb.shrem

#!/bin/sh
umount /dev/$1
sync

脚本中的处理逻辑,设备的挂载路径等,均可以自定义。get

 

参考:

udev (简体中文)

https://en.wikipedia.org/wiki/Udev

http://www.cnblogs.com/cslunatic/p/3171837.html