在安装/插入或卸载/拔出 USB 设备后,我该怎么做才能自动运行脚本?
答案1
谢谢最小六足动物以及各自的贡献者线他在对我的类似问题的评论中提到,我想我现在可以为您提供以下答案。
您需要为此类 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>
笔记:
您可以捕获这些值
<yourvendorid>
,然后在终端中<yourproductid>
输入命令lsusb
(当您的 USB 设备插入时),该命令将列出当前可用的所有 USB 设备,例如Bus 003 Device 002: ID 8087:07da Intel Corp.
,其中8087是个供应商 ID和07日是个产品编号。可以
<yourdevice>
是任意随意的您可以为 USB 设备选择名称,例如,我选择使用通用名称“键盘“当为我的 USB 键盘创建此类文件时,每次插入时都需要应用不同的键盘布局。在某些情况下,当您在拔出设备后不需要执行任何操作(例如,撤销插入设备时所做的更改)时,可能不需要使用
ACTION=="remove"
udev 规则文件中的行,因此不需要使用相关的 2(两个)“out
”文件。某些显示管理器将存储
.Xauthority
在用户主目录之外。您需要ENV{XAUTHORITY}
相应地更新。例如,GNOME 显示管理器如下所示:$ printenv XAUTHORITY
/run/user/1000/gdm/Xauthority
答案2
这文件管理器 SpaceFM允许这样做。请参阅自动运行设置,例如自动运行 | 安装或者自动运行 | 卸载时。