Tôi muốn thực thi một tập lệnh khi tôi cắm một thiết bị vào máy Linux của mình. Ví dụ: chạy xinput
trên chuột hoặc bản sao lưu trên một ổ đĩa nhất định.
Tôi đã thấy rất nhiều bài viết về điều này, gần đây nhất ở đây và ở đây . Nhưng tôi không thể làm cho nó hoạt động được.
Dưới đây là một số ví dụ đơn giản đang cố gắng nhận được ít nhất một số loại phản hồi.
/etc/udev/rules.d/test.rules
#KERNEL=="sd*", ATTRS{vendor}=="*", ATTRS{model}=="*", ATTRS{serial}=="*", RUN+="/usr/local/bin/test.sh"
#KERNEL=="sd*", ACTION=="add", "SUBSYSTEM=="usb", ATTRS{model}=="My Book 1140 ", ATTRS{serial}=="0841752394756103457194857249", RUN+="/usr/local/bin/test.sh"
#ACTION=="add", "SUBSYSTEM=="usb", RUN+="/usr/local/bin/test.sh"
#KERNEL=="sd*", ACTION=={add}, RUN+="/usr/local/bin/test.sh"
KERNEL=="sd*", RUN+="/usr/local/bin/test.sh"
KERNEL=="*", RUN+="/usr/local/bin/test.sh"
/usr/local/bin/test.sh
#!/usr/bin/env bash
echo touched >> /var/log/test.log
if [ "${ACTION}" = "add" ] && [ -f "${DEVICE}" ]
then
echo ${DEVICE} >> /var/log/test.log
fi
Thư mục quy tắc được theo dõi inotify
và sẽ được kích hoạt ngay lập tức. Tôi tiếp tục thay thế bàn phím, chuột, máy tính bảng, thẻ nhớ và ổ đĩa USB, nhưng không có gì. Không có tệp nhật ký chạm vào.
Bây giờ, cách đơn giản nhất để ít nhất biết một cái gì đó đang hoạt động là gì? Làm việc từ một thứ gì đó không hiệu quả thì dễ hơn làm.
3.5.0-23-generic
.
udevadm trigger
hoặc cắm một thiết bị để áp dụng quy tắc mới?