Я хотел бы изучить правила udev. Вот что я делаю:
victor@X301A1:~$ ls /etc/udev/rules.d/
70-persistent-cd.rules 70-persistent-net.rules README
Затем:
victor@X301A1:~$ sudo gedit /etc/udev/rules.d/01-my-first-udev.rules
Мое правило:
ACTION=="add", RUN+="echo HELLO ! > /home/victor/udev_test_log.txt"
После сохранения файла:
sudo udevadm control --reload-rules
[ 118] Я ожидал, что при подключении USB-устройства в файл будет записана запись, но ничего не происходит. Где я не прав?
На самом деле, я не мог получить ссылку на это; Но это что-то получилось от Try & amp; Ошибка.
udev
требуется полный путь скрипта / программы / файла, используемого в PROGRAM
, TEST
, RUN
или IMPORT
.
udev
не поддерживает операции перенаправления.
udev
могут обрабатывать команды с аргументами.
udev
имеет переменную замену.
Таким образом, вы можете написать многофункциональный скрипт (а не просто скрипт слепой / одиночной задачи :)), пример, который наверняка работает для меня:
KERNEL=="2-1.2:1.[0-9]*", DRIVER!="usb-storage", RUN+="/bin/sh -c 'echo -n %k,%p > /home/sneetsher/Desktop/%n.txt'"
/bin/sh
абсолютный путь [ 1120] >
перенаправление обрабатывается внутри оболочки -c '...'
2 аргумента команды %k
, %p
, %n
переменные udev (имя ядра устройства, устройство путь, номер устройства) Итак, для вашего случая:
ACTION=="add", RUN+="/bin/sh -c 'echo HELLO ! > /home/victor/udev_test_log.txt'"
В RUN вы должны указать путь к скрипту. См. man udev
:
Добавить программу в список программ, которые должны быть выполнены для определенного устройства. Это можно использовать только для очень коротких задач. Выполнение обработки события в течение длительного периода времени может заблокировать все дальнейшие события для этого или зависимого устройства. Долгосрочные задачи должны быть немедленно отсоединены от самого процесса события.
blockquote>Например, создайте новый скрипт, скажем
hello.sh
в/lib/udev
сsudo -H gedit /lib/udev/hello.sh
и вставьте следующие строки внутрь:#!/bin/bash echo HELLO ! > /home/<username>/udev_test_log.txt
Измените
<username>
с вашим пользователем название. Сохраните файл, закройте его и сделайте его исполняемым с помощью:chmod +x /lib/udev/hello.sh
Добавьте новое правило в ваш файл
/etc/udev/rules.d/01-my-first-udev.rules
, например:ACTION=="add", RUN+="/lib/udev/hello.sh"