当我使用 Linux将设备(平板电脑,相机,闪存驱动器,外部硬盘驱动器)连接到我的笔记本电脑时,我经常键入以下命令序列. $ls / dev / sd * 假设我的设备是/ dev / sdc 可选$sudo mkdir / media / my_flas
$ls / dev / sd *
假设我的设备是/ dev / sdc
可选$sudo mkdir / media / my_flash
可选$sudo chmod 777 / media / my_flash
$sudo mount / dev / sdc / media / my_flash
然后我会复制一些文件和
$sudo umount /dev/sdc
这个序列保证了文件被复制,没有任何不好的事情发生.
你能告诉我如何自动执行这一系列命令吗?所以我只会插入设备,它会识别它应该安装到哪个目录,然后我会进行一些文件传输,然后它会发出信号(以某种方式)我可以拔掉设备吗? Linux操作系统中是否有一些设置?
如 SHW所述,对可移动设备的连接作出反应的系统组件是 Udev.即使是 udev tutorial也可能有点令人生畏;我将向您展示几个例子.涉及两个步骤:将设备文件(例如/ dev / sdc)与硬件设备相关联,并安装设备以访问文件系统. Udev的工作是第一步,尽管你可以告诉它运行一个外部命令,比如mount.
对于已知的可移动设备,我喜欢在/ dev / removable下使用专用设备名称(该目录名称是个人约定).以下udev规则(放在/etc/udev/rules.d/my_removable_disks.rules中)为两个磁盘创建具有已知名称的符号链接,这两个磁盘都由其分区1上的文件系统的属性标识:
KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s UUID %N1", RESULT=="1234-5678", SYMLINK+="removable/foo" KERNEL=="sd?", PROGRAM=="/sbin/blkid -o value -s LABEL %N1", RESULT=="Joe's disk", SYMLINK+="removable/joe"
较旧版本的udev可能需要/ udev / lib / vol_id -u%N1(对于UUID,-l作为标签)而不是blkid调用.您可以匹配更多内容,例如ATTRS {vendor} ==“Yoyodine”,ATTRS {serial} ==“XYZZY12345PDQ97”(而不是PROGRAM == …,RESULT == …)匹配设备的供应商和序列号.
然后你可以在/ etc / fstab中使用这样的一行:
/dev/removable/joe /media/joe vfat noauto,user
如果您更喜欢自动安装,可以在udev行中添加RUN =“mkdir / media / foo&& mount / dev / removable / foo / media / foo”等内容.在拔出电源之前不要忘记卸载/ media / foo.