首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Udev规则不运行

Udev规则不运行
EN

Unix & Linux用户
提问于 2018-08-09 22:47:59
回答 1查看 4.5K关注 0票数 0

我正在使用OpenSuse Leap上的Udev规则,并且在我的系统中插入一个USB设备后,我尝试运行一个简单而小的脚本。

但是,我在关键字"RUN+=“中添加的脚本没有运行。

这些步骤如下:

1)我根据udevadm给出的信息编写了"10_MY_RULES.rules“规则。

代码语言:javascript
复制
KERNEL=="sdf1", SUBSYSTEM=="block", SUBSYSTEMS=="usb", ATTRS{product}=="Flash Drive", ATTRS{manufacturer}=="Samsung",ATTRS{idProduct}=="1000", ATTRS{idVendor}=="090C", RUN="/home/user/bin/script.sh"

我的剧本"script.sh“就是这样写的:

代码语言:javascript
复制
#!/bin/bash; mkdir /home/user/Desktop/CREATE_FOLDER_TEST

2) OpenSuse Leap有几个分配udev规则的地方。

这些地点如下:

  • /etc/udev/规则。
  • /usr/lib/udev/rules.d .d
  • /run/udev/rules.d .d

我将我的规则放在“/run / udev /rues.d”中,因为当我插入我的USB设备时,udev将在/run下创建一个访问文件。

3)运行以下命令:

  • udevadm控制.重装规则
  • udevadm触发器

4)一旦这样做,我也运行"udevadm监视器“,看看我的系统正在做什么,一旦一个外围设备插入,在这种情况下,我的USB。

5)当我的闪存被添加到系统时,我注意到没有执行任何操作,我的脚本没有运行。因此,我运行了以下命令,以在特定设备上触发我的规则

  • udevadm测试--action=add /path/to/device

我注意到我的规则正在被阅读,正如你在我图片的最后一行中所看到的.

没有任何运气,我修改了我的规则,并修改了它。我添加了更多的内核、子系统、ATTRS等等

以上所有这些我都以根和用户的身份以两种模式运行。

EN

回答 1

Unix & Linux用户

发布于 2019-02-01 09:34:56

您是否尝试过手动执行script.sh

我试过了

代码语言:javascript
复制
bash: ./script.sh: /bin/bash;: bad interpreter: No such file or directory

不能在脚本的#!行中使用分号作为命令分隔符。这一行只用于指定脚本解释器和可能的选项,而不是其他选项。

实际上,您的规则似乎失败了,因为您的script.sh无法执行;您的udev规则可能很好。正如@eblock评论的那样,您应该使用最少的必要数量的检查:如果您的规则不起作用,您应该删除一些检查,而不是添加更多的检查。

还请注意,/run不是持久的,因为它位于tmpfs文件系统(=本质上是一个RAM磁盘)。你放进去的任何东西都会在下一次重新启动后消失。因此,/run/udev/rules.d应该只用于由其他规则或其他自动化产生的自动生成的规则。

/usr/lib/udev/rules.d适用于发行版的标准规则。系统管理员应该在必要时使用/etc/udev/rules.d来补充或重写标准规则。

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/461684

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档