Arch-Linux

udev規則沒有被使用?

  • April 4, 2015

我正在設置udev以在插入和移除外部 USB 硬碟驅動器時處理它(尚未安裝)。到目前為止,我已經制定了兩個新規則/etc/udev/rules.d/10-local.rules來記錄將磁碟添加/刪除到文件中:

SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/echo 'inserted lacie' >> /home/herman/udev_file"
SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="remove", RUN+="/bin/echo 'removed lacie' >> /home/herman/udev_file"

我已經啟動了udevd守護程序並多次重新插入硬碟驅動器,但/home/herman/udev_file從未創建過 . 在規則中,我使用udevadm info -a -n /dev/sdb了相關硬碟驅動器命令中的密鑰。我在這裡做錯了什麼?正在檢測磁碟,我可以做到mount。任何幫助表示讚賞。

udev將日誌資訊輸出到/var/log/messages,但預設情況下它只記錄錯誤,並且碰巧您構造了一個命令,該命令沒有執行您想要的操作,但也不會出錯。重定向由您的>>shell 處理,並且 udev 不會通過 shell 執行命令,因此它實際上是在執行二進製文件/bin/echo並將其傳遞給 arguments 'inserted lacie' >> /home/herman/udev_file。如果您更改 udev 以記錄更多資訊(編輯/etc/udev/udev.conf並添加行udev_log="info"),您將看到它執行該命令,並且輸出為'inserted lacie' >> /home/herman/udev_file

就個人而言,我更喜歡製作簡短的 shell 腳本來做我想做的事,這樣我就可以在不重新啟動的情況下編輯它們udev,但你也可以使用/bin/sh -c它來執行你的命令,這樣它就會處理重定向:

SUBSYSTEM=="block", ATTRS{model}=="2AS", ACTION=="add", RUN+="/bin/sh -c '/bin/echo inserted lacie >> /home/herman/udev_file'"

引用自:https://unix.stackexchange.com/questions/40387