sum*_*mid 41
现在systemd有更好的解决方案。您创建了一个依赖于您的媒体并且需要您的服务,例如:/etc/systemd/system/your.service
[Unit]
Description=My flashdrive script trigger
Requires=media-YourMediaLabel.mount
After=media-YourMediaLabel.mount
[Service]
ExecStart=/home/you/bin/triggerScript.sh
[Install]
WantedBy=media-YourMediaLabel.mount
Run Code Online (Sandbox Code Playgroud)
然后你必须启动/启用服务:
sudo systemctl start your.service
sudo systemctl enable your.service
Run Code Online (Sandbox Code Playgroud)
挂载后,systemd 会触发您的触发器脚本。与 udev 规则相比的优势在于脚本真正在挂载后触发,而不是在添加系统设备后触发。
用例:我有一个要自动备份的加密分区。添加设备后,我必须输入密码。如果我将备份脚本连接到 udev,脚本会在我输入密码时尝试运行,这将失败。
资源:使用 udev 编写脚本
注意:您可以通过以下方式找到您的设备单元:
systemctl list-units -t mount
Run Code Online (Sandbox Code Playgroud)
Oli*_*Oli 31
首先在 中找到您的设备lsusb。请注意 ID(例如0a81:0101)
在/etc/udev/rules.d/via 中创建一个新的 udev 规则文件,sudoedit /etc/udev/rules.d/100-mount-videos.rules然后在其中创建一个新规则,如下所示:
ACTION=="add", ATTRS{idVendor}=="0a81", ATTRS{idProduct}=="0101", RUN+="/home/your_username/bin/mount_videos.sh"
Run Code Online (Sandbox Code Playgroud)
请注意我如何使用lsusb.
然后你只需要编写脚本来完成工作。一个简单的 mount 命令应该可以工作。您可能需要sleep 5在那里使用命令来等待文件系统初始化(如果您让 gnome 进行主挂载——但您可以先挂载它,然后您可能不需要睡眠)。
Allan 的补充:长时间运行的脚本可能会阻止“此设备或相关设备的所有进一步事件”。我的 Mint 手册页进一步指出“长时间运行的任务需要立即与事件进程本身分离。” 没有提供有关从哪里获得执行此操作的技能的提示。
Oli 的回复:像这样包裹它:https : //askubuntu.com/a/106359/449
获取 ATTRS{idVendor} 和 ATTRS{idProduct} 值的另一种方法(在 Ubuntu 12.04 中测试)是:
找到您的 USB 安装位置:
$ mount | grep /dev/sd*
Run Code Online (Sandbox Code Playgroud)
这显示如下内容:
/dev/sdb on /media/SOMEDIR type vfat ...
Run Code Online (Sandbox Code Playgroud)使用 udevadm 获取该设备信息:
udevadm info -q all -n /dev/sdb | grep -E -i -w '.*VENDOR_ID.*|.*MODEL_ID.*'
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的:
E: ID_MODEL_ID=001a
E: ID_VENDOR_ID=002b
Run Code Online (Sandbox Code Playgroud)现在使用 ATTRS{idProduct} 的模型 ID 和 ATTRS{idVendor} 的供应商 ID
ACTION=="add", ATTRS{idVendor}=="002b", ATTRS{idProduct}=="001a" ...
Run Code Online (Sandbox Code Playgroud)在 Nautilus 中的“编辑”>“首选项”>“媒体”下,您可以选择“其他操作”而不是“自定义命令”来执行不同类型的脚本/命令。到那时,USB 驱动器已经安装,但我想您仍然可以将其(使用自定义命令)链接到您希望驱动器出现在其中的文件夹。我无法判断这是否比使用 udev 更容易或更好。
| 归档时间: |
|
| 查看次数: |
64174 次 |
| 最近记录: |