转自链接https://zhuanlan.zhihu.com/p/443745437
①创建用于挂载U盘的目录
mkdir /mnt/usb –p
②在/etc/udev/rules.d目录下添加用于检测U盘插入规则(add),终端下执行以下命令创建第一个U盘插入规则。
vim /etc/udev/rules.d/11-add-usb.rules
在11-add-usb.rules中添加如下内容:
ACTION!="add",GOTO="END"
KERNEL=="sda[0-9]",RUN+="/etc/mount-usb.sh %k"
LABEL="END"
TF卡的KERNEL==“mmcblk[0-9]p1”
上面的内容意思是:如果不是add添加事件,那么就跳到END标签处结束,如果是add事件那么执行以下规则,如果添加的设备是sda0至sda9中任意一个,那么就执行RUN后面的内容,此处是一个脚本,一个挂载U盘的脚本,它还带有个参数%k,表示kernel的值。
然后在/etc/目录下创建mount-usb.sh脚本
在mount-usb.sh中添加如下内容:
#!/bin/sh
mount -t vfat /dev/$1 /mnt/usb
sync
上面的内容意思是:#!/bin/sh表示是脚本文件,按脚本文件解析,mount -t vfat /dev/$1 /mnt/usb表示按vfat格式将/dev/$1挂载到/mnt/usb目录下,其中这里的$1就是之前规则里传入进来的%k,也就是kernel值。Sync表示同步U盘数据。
最后记得给脚本文件添加执行权限。
chmod +x /etc/mount-usb.sh
③在/etc/udev/rules.d目录下添加用于检测U盘移出规则(remove),终端下执行以下命令创建第U盘移出规则。
vim /etc/udev/rules.d/11-remove-usb.rules
在11-remove-usb.rules中添加如下内容:
ACTION!="remove",GOTO="END"
KERNEL=="sda[0-9]",RUN+="/etc/umount-usb.sh %k"
LABEL="END"
上面的内容意思是:如果不是remove添加事件,那么就跳到END标签处结束,如果是remove事件那么执行以下规则,如果移出的设备是sda0至sda9中任意一个,那么就执行RUN后面的内容,此处是一个脚本,一个卸载U盘的脚本,它还带有个参数%k,表示kernel的值。
然后在/etc/目录下创建umount-usb.sh脚本
在umount-usb.sh中添加如下内容:
#!/bin/sh
sync
umount /mnt/usb
上面的内容意思是:#!/bin/sh表示是脚本文件,按脚本文件解析,先同步U盘数据,然后再卸载,其中这里的$1就是之前规则里传入进来的%k,也就是kernel值。
最后记得给脚本文件添加执行权限。
chmod +x /etc/umount-usb.sh
④设置好规则后,当我们插入U盘,执行df –Th就会显示如下图