我正在开展一个项目,希望在USB设备插入时运行一个用C语言编写的程序。使用udev规则是否可行?
我已经成功地让它在我插入设备时运行了一个Hello World脚本。但是,它会重复运行多次。
当前路径:/etc/udev/rules.d/98-local.rules
当前规则:
SUBSYSTEMS=="usb", ACTION=="add", RUN+="/usr/local/bin/USB.sh"
脚本路径:/usr/local/bin/USB.sh
脚本内容:
#!/bin/bash
echo 'Hello World!' >>"/home/<username>/Desktop/udev.out"
exit
我尝试过类似以下的方法来运行可执行文件:
#!/bin/bash
usr/games/blackjack
exit
在终端中输入usr/games/blackjack是可以运行的,但当USB设备插入时无法运行。但是,我知道脚本正在运行,因为它们已经被合并到同一个文件中,并且hello world已经创建。
我还尝试从我的用户帐户中运行可执行文件,如下所示:
SUBSYSTEMS=="usb", ACTION=='add", RUN+="/bin/su tyler -c '/usr/local/bin/USB.sh'"
然而,这并没有起作用。
这是设备权限的问题还是无法运行可执行文件?
*注意:我已经广泛阅读了http://reactivated.net/writing_udev_rules.html上的udev规则解释。
#!/bin/bash
)前面有一个额外的空格。在这种情况下可能并不重要(脚本将使用默认的/bin/sh
调用),但你应该修复它。 - Keith Thompson