问题描述
挂载/插入或卸载/拔出 USB 设备后,如何自动运行脚本?
最佳答案
感谢 MinimusHeximus 和他在对我的类似问题的评论中提到的 thread 的相应贡献者,我想我现在可以为您提供以下答案。
对于这样的 USB 设备,您需要 5(五个)文件,如下所示,只需填写相应的值 <fortheseparts>
:
/etc/udev/rules.d/00-usb-<yourdevice>.rules
ACTION=="add", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-in_udev"
ACTION=="remove", ATTRS{idVendor}=="<yourvendorid>", ATTRS{idProduct}=="<yourproductid>", ENV{XAUTHORITY}="/home/<user>/.Xauthority", ENV{DISPLAY}=":0", OWNER="<user>", RUN+="/usr/local/bin/usb-<yourdevice>-out_udev"
/usr/local/bin/usb-<yourdevice>-in_udev
#!/bin/bash
/usr/local/bin/usb-<yourdevice>-in &
/usr/local/bin/usb-<yourdevice>-in
#!/bin/bash
sleep 1
<yourbashscriptcode>
/usr/local/bin/usb-<yourdevice>-out_udev
#!/bin/bash
/usr/local/bin/usb-<yourdevice>-out &
/usr/local/bin/usb-<yourdevice>-out
#!/bin/bash
sleep 1
<yourbashscriptcode>
笔记:
-
您可以通过在终端中输入命令
lsusb
来捕获值<yourvendorid>
和<yourproductid>
– 当您的 USB 设备插入时 – 这将列出您当前可用的所有 USB 设备,例如Bus 003 Device 002: ID 8087:07da Intel Corp.
,其中 8087 是 VendorID,07da 是 ProductID。 \n -
<yourdevice>
可以是您为 USB 设备选择的任意名称,例如,在为我的 USB 键盘创建此类文件时,我选择使用通用名称 “keyboard”,这需要在插入时应用不同的键盘布局。\n -
在某些情况下,可能不需要在 udev 规则文件中使用 ACTION==”remove” 行,因此当您不需要执行任何操作(例如反向插入设备时所做的更改)在设备拔出后。\n
-
一些显示管理器将
.Xauthority
存储在用户主目录之外。您将需要相应地更新ENV{XAUTHORITY}
。例如,GNOME 显示管理器如下所示:\n
$ printenv XAUTHORITY\n
\n
/run/user/1000/gdm/Xauthority\n
\n
次佳答案
file manager SpaceFM 允许这样做。请参阅自动运行设置,例如 Auto Run | On Mount 或 Auto Run | On Unmount 。