Shell me the code 之 自动挂载U盘

u d e v 设 备 文 件 管 理 : \color{#FF0000}{udev设备文件管理:} udev

如果你可以在用户空间内创建设备文件的话,就不需要在内核空间做。 Linux系统内核在检测到新设备的时候(如发现一个USB存储器),会向用户空间进程发送消息(称为udevd)。 ( d 是 d e a m o n , 守 护 进 程 的 意 思 ) \color{#0000FF}{(d是deamon,守护进程的意思)} ddeamon,用户空间进程会在另一端验证新设备的属性,创建设备文件,执行初始化。

u d e v d 守 护 进 程 工 作 流 程 : \color{#FF0000}{udevd守护进程工作流程:} udevd

(1) 内核通过一个内部网络链接向udevd发送一个通知事件,称作uevent
(2) udevd加载uevent中的所有属性信息。
(3) udevd通过规则解析来决定执行哪些操作和增加哪些属性信息。

规 则 文 件 的 位 置 : \color{#00FF00}{规则文件的位置:}

/lib/udev/rules.d/etc/udev/rules.d目录中。

默认规则在/lib目录中,会被/etc中的规则覆盖。

Shell me the code 之 自动挂载U盘

Shell me the code 之 自动挂载U盘

规 则 \color{#FF0000}{规则} 大概长这个样子:

Shell me the code 之 自动挂载U盘

第一行是注释,第二行是匹配条件,用了==,第三行是匹配之后的动作。

后面会具体举例。

u d e v a d m : \color{#0000FF}{udevadm:} udevadm

udevadm程序是udevd的管理工具,你可以使用它来重新加载udevd规则,触发消息。

插上U盘前:

Shell me the code 之 自动挂载U盘

插上后:

Shell me the code 之 自动挂载U盘

监视器已经检测到了usb的添加。

查看一下,的确已经能找到了。

Shell me the code 之 自动挂载U盘

下一步就是利用这个信号。

先来尝试一下挂载:

Shell me the code 之 自动挂载U盘

exfat格式可能是不支持的,这时候需要安装一些支持,不同的系统有些差别,网上一搜就是。

开始干活!

为了防止误杀别的设备,需要找到当前设备的一些特征,例如厂商id。

Shell me the code 之 自动挂载U盘

规 则 \color{#0000FF}{规则} 如下:

Shell me the code 之 自动挂载U盘
具体规则用法见博文

挂载代码如下:

Shell me the code 之 自动挂载U盘
mount 是挂载的指令。

其实这里挂载之后还可以加一些自己的功能,如文件夹同步。之前有一段时间,我就想过在windows下要是有这个功能多好。但是在Linux下自己做一下也是简单几步,这就是其魅力吧。

测试效果,卸载之后,连接,会自动连上。自动umount同理~~

Shell me the code 之 自动挂载U盘

收工走人!