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,守护进程的意思)} (d是deamon,守护进程的意思)用户空间进程会在另一端验证新设备的属性,创建设备文件,执行初始化。
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中的规则覆盖。
规 则 \color{#FF0000}{规则} 规则大概长这个样子:
第一行是注释,第二行是匹配条件,用了==
,第三行是匹配之后的动作。
后面会具体举例。
u d e v a d m : \color{#0000FF}{udevadm:} udevadm:
udevadm程序是udevd的管理工具,你可以使用它来重新加载udevd规则,触发消息。
插上U盘前:
插上后:
监视器已经检测到了usb的添加。
查看一下,的确已经能找到了。
下一步就是利用这个信号。
先来尝试一下挂载:
exfat格式可能是不支持的,这时候需要安装一些支持,不同的系统有些差别,网上一搜就是。
开始干活!
为了防止误杀别的设备,需要找到当前设备的一些特征,例如厂商id。
规 则 \color{#0000FF}{规则} 规则如下:
具体规则用法见博文
挂载代码如下:
mount 是挂载的指令。
其实这里挂载之后还可以加一些自己的功能,如文件夹同步。之前有一段时间,我就想过在windows下要是有这个功能多好。但是在Linux下自己做一下也是简单几步,这就是其魅力吧。
测试效果,卸载之后,连接,会自动连上。自动umount同理~~
收工走人!