USB设备插入时运行的东西不起作用

我在/etc/udev/rules.d/local.rules中创build了一个脚本

SUBSYSTEM=="usb",SYSFS{idVendor=="b58e"},SYSFS{idProduct=="9e84"},ACTION=="add",RUN+="notify-send USB"

然后我重新加载udev

sudo udevadm control --reload-rules

我试图删除一切,但子系统和运行。 我已经尝试了运行'='而不是'+ =',我厌倦了ATTR而不是SYSFS。 我试过“sudo service udev restart”和“sudo reload udev”。 我拔下设备,然后再次插入,它不运行的行动。 我尝试将其重命名为70-local.rules并将权限更改为+ x。 我试过把“子系统”改成“公交车”。 我试过将运行设置为“/path/test.sh”,它具有相同的命令。

npm安装sqlite3错误

在Kubuntu的/ usr / bin / ld上build立MEX文件(MATLAB 2012a)时出错:找不到-lstdc ++'

Emacs:编辑没有stream行的根文件

如何在自定义发行版中replaceUbuntu徽标和品牌标记?

使用Python检测工作站/系统屏幕locking(ubuntu)

Java:System.getProperty(“user.home”)返回“?”

如何在Geany中执行任何操作?

突然间,我在kde有一个巨大的光标,如何使它正常?

python“ImportError:无法导入名称urandom”

设立Ruby Koans

我不是专家,这不是一个答案,但我发现以下步骤有助于确定适当的触发属性:

使用udevadm , lsusb或usb-devices找到设备路径。 我通常只是使用lsusb并让我的shell中的选项卡完成。 在我的情况下,路径是/dev/bus/usb/003/007 。

使用udevadm标识规则编写的设备属性。 在我的情况下,我使用了udevadm info -a --attribute-walk --root --name=/dev/bus/usb/003/007 。

编写规则并检查是否触发。 在我的情况下,我只是将设备所有者更改为用户“stephen”,我很容易通过使用ls -l /dev/bus/usb/003/007来检查它是否正在工作。 我的规则是这样的: SUBSYSTEM=="usb",ATTR{idVendor}=="18d1",OWNER="stephen" 。 我有一个类似的规则,我困惑了一会儿,因为子系统期望ATTRS不是ATTR ,这就是为什么我建议走属性。 在后一种情况下的规则变成:SUBSYSTEM ==“tty”,ATTRS {idVendor} ==“0403”,ATTRS {idProduct} ==“6001”,OWNER =“stephen”。

而且,当然, man udev总是有帮助的。 正如你所说,你应该努力确定你的规则正确触发,可能是最好的,只需在设备上做一个快速的所有权变更,就像我第一步所做的那样。 你有时会遇到不好的属性或符号链接的问题

它不运行的行动

不,它运行的行动。 问题是, 它不知道在哪里发送通知 ,因为在udev启动时没有运行通知框架。 您将需要通过系统总线发送DBus消息,并让用户守护程序捕获消息并发送通知。

相关文章

引言 本文从Linux小白的视角, 在CentOS 7.x服务器上搭建一个...
引言: 多线程编程/异步编程非常复杂,有很多概念和工具需要...
一. 宏观概念 ASP.NET Core Middleware是在应用程序处理管道...
背景 在.Net和C#中运行异步代码相当简单,因为我们有时候需要...
HTTP基本认证 在HTTP中,HTTP基本认证(Basic Authenticatio...
1.Linq 执行多列排序 OrderBy的意义是按照指定顺序排序,连续...