我正在嘗試創建一個 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 命令發揮作用。