udev Run 指令未執行

udev Run 指令未執行

我正在嘗試創建一個 udev 規則來在透過 USB 連接手機時解鎖我的電腦。我找不到正在運行的規則,因此我嘗試了一個更簡單的規則。這是規則(匿名):

KERNEL=="sd?1", ATTRS{idVendor}=="****", ATTRS{idProduct}=="****", SYMLINK+="phone", RUN+="touch /home/user/udev.touch"

我知道該規則正在運行,因為正在創建鏈接phone -> sdc1,但尚未創建文件。我是否必須啟用該文件才能運行外部程式的安全性設定?

答案1

您必須在 RUN 鍵中使用完整路徑,因為 ( man udev)

如果沒有給出絕對路徑,則程式預計位於 /lib/udev 中,否則必須指定絕對路徑。程式名稱和參數以空格分隔。單引號可用來指定帶有空格的參數。

儘管如此,(bash)腳本本身應該表現正常,也就是說您不需要指定路徑。

答案2

我在 udev 上遇到了同樣的問題。我幾乎嘗試了一切方法來讓腳本在添加和刪除設備時正常工作。

這是我製作的程式碼:

ACTION=="add", KERNEL=="sda1", SUBSYSTEMS=="scsi", ATTRS{model}=="AVV207-0        ", SYMLINK+="Lacie", MODE="0666", RUN+="/bin/sh /usr/bin/udev/lacie-add.sh", OPTIONS="last_rule"
ACTION=="remove", KERNEL=="sda1", RUN+="/bin/sh /usr/bin/udev/lacie-del.sh", OPTIONS="last_rule"

新增OPTIONS="last_rule"參數就成功了。

答案3

我也遇到過這個問題,我可以確認從 12.04 開始,您需要指定完整bash路徑和完整bash腳本才能使 RUN 命令發揮作用。

相關內容