udev Запускать команды не работает

Я пытаюсь создать правило udev для разблокировки компьютера при подключении телефона через USB. Я не мог найти, что это правило запускалось, и поэтому я попробовал гораздо более простое правило. Это правило (анонимное):

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

Я знаю, что правило работает, потому что ссылка phone -> sdc1 создается, но файл не создается. Есть ли настройки безопасности, которые я должен включить, чтобы файл запускал внешнюю программу?

6
задан 11 October 2011 в 00:19

3 ответа

Вы должны использовать полный путь в ключе RUN, потому что (man udev)

Если не указан абсолютный путь, то программа, как ожидается, будет жить в /lib/udev, в противном случае должен быть указан абсолютный путь. Название программы а аргументы разделены пробелами. Одиночные кавычки могут быть использованы для указывать аргументы с пробелами.

Тем не менее, сам скрипт (bash) должен вести себя как обычно, то есть не нужно указывать путь.

5
ответ дан 11 October 2011 в 00:19

У меня тоже была эта проблема, и я могу подтвердить, что с 12.04 вам нужно указать полный путь bash и полный bash скрипт для RUN команда на работу.

3
ответ дан 11 October 2011 в 00:19

У меня была такая же проблема с 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
ответ дан 11 October 2011 в 00:19

Другие вопросы по тегам:

Похожие вопросы: