自动执行安装命令的顺序


9

当我使用Linux将设备(平板电脑,相机,闪存驱动器,外部硬盘驱动器)连接到笔记本电脑时,我经常键入以下命令序列。

$ 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 OS中是否对此有一些设置?

Answers:


6

该系统部件作出反应到可移动设备的连接是Udev的,如通过提及SHW。即使是udev教程也可能有些令人生畏。我将向您展示一些示例。

涉及两个步骤:将设备文件(例如/dev/sdc)与硬件设备相关联,以及安装该设备以访问文件系统。Udev的工作是第一步,尽管您可以告诉它运行一个外部命令(例如)mount

对于已知的可移动设备,我喜欢在下使用专用设备名称/dev/removable(该目录名称是个人约定)。以下udev规则(放置在中/etc/udev/rules.d/my_removable_disks.rules)创建具有两个磁盘已知名称的符号链接,这两个磁盘均由分区上文件系统的属性标识:

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

如果您喜欢自动挂载,则可以, RUN="mkdir /media/foo && mount /dev/removable/foo /media/foo"在udev行中添加类似内容。umount /media/foo拔出电源前不要忘记。


感谢您的出色解决方案。我在某些外部驱动器上安装了LVM,因此推荐的时间更长(包括VG激活等),现在我甚至可以在此添加备份脚本了:)。
2012年

亲爱的读者-如果您想了解可用的ATTRS,请在您的设备上尝试以下操作:udevadm info --name=/dev/DEVICE --attribute-walk
Grzegorz Wierzowiecki,2012年

8

您可以通过编写UDEV规则来做到这一点,该规则将使“ bash”脚本“运行”与您提到的bash命令相同的命令。每当您插入上述设备时,UDEV就会识别出这一点,并开始按照规则运行。

对于规则编写,您可以点击链接。


哦,很好。尚不知道-将链接添加为书签并将其添加到我的曲目中。
Shadur

您能更具体一点吗?链接中的哪些段落与我相关?
xralf 2011年

看起来像我要找的东西。这些天我没有时间阅读它。我会研究它,并在我理解它的时候在您的评论中粘贴正确的答案。谢谢
xralf 2011年

4

如今,有几个自动挂载守护进程,以及pmount专门用于使用户/media无需sudo访问即可挂载可移动设备的命令。

Gnome和KDE都具有在连接时自动挂载可移动卷的选项。根据您安装的发行版的不同,此功能甚至可能默认为“ on”。

在GNOME中,控制此功能的选项可在下找到System -> Preferences -> Removable Media;我最近没有使用KDE的经验。


我想在Window Management Environement(如KDE,GNOME等)上独立进行此操作(好像未启动X)。
xralf 2011年

然后,您必须阅读SHW发布的链接,并阅读几乎所有内容。
Shadur 2011年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.