自动执行安装命令的顺序

自动执行安装命令的顺序

当我使用 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 操作系统中有一些设置吗?

答案1

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

对于规则编写,您可以遵循关联。

答案2

对可移动设备的连接做出反应的系统组件是乌德夫,正如所提到的SHW。即便是udev教程可能有点令人畏惧;我将向您展示几个例子。

涉及两个步骤:将设备文件(例如/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

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

答案3

现在有几个自动安装守护进程,以及pmount专门用于让用户/media无需sudo访问即可安装可移动设备的命令。

Gnome 和 KDE 都可以选择在连接时自动安装可移动卷;根据您安装的发行版,此功能甚至可能默认为“打开”。

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

相关内容