我如何使 udev 规则起作用?

Vic*_*ine 6 udev

我想学习 udev 规则。这是我所做的:

victor@X301A1:~$ ls /etc/udev/rules.d/
70-persistent-cd.rules  70-persistent-net.rules  README
Run Code Online (Sandbox Code Playgroud)

然后:

victor@X301A1:~$ sudo gedit /etc/udev/rules.d/01-my-first-udev.rules
Run Code Online (Sandbox Code Playgroud)

我的规则:

ACTION=="add", RUN+="echo HELLO ! > /home/victor/udev_test_log.txt"
Run Code Online (Sandbox Code Playgroud)

保存文件后:

 sudo udevadm control --reload-rules
Run Code Online (Sandbox Code Playgroud)

我预计连接 USB 设备会写入文件,但没有任何反应。我哪里错了?

Rad*_*anu 9

在 RUN 中,您必须放置脚本的路径。见man udev

将程序添加到要为特定设备执行的程序列表中。这只能用于非常短的运行任务。长时间运行事件进程可能会阻止此设备或从属设备的所有进一步事件。长时间运行的任务需要立即与事件进程本身分离。

对于examle,创建一个新的脚本,让说hello.sh/lib/udevsudo -H gedit /lib/udev/hello.sh,并把下一行内:

#!/bin/bash

echo HELLO ! > /home/<username>/udev_test_log.txt
Run Code Online (Sandbox Code Playgroud)

更改<username>为您的用户名。保存文件,关闭它并使其可执行:

chmod +x /lib/udev/hello.sh
Run Code Online (Sandbox Code Playgroud)

在您的/etc/udev/rules.d/01-my-first-udev.rules文件中添加一条新规则,如下所示:

ACTION=="add", RUN+="/lib/udev/hello.sh"
Run Code Online (Sandbox Code Playgroud)