udev Запуск команд не выполняется

udev Запуск команд не выполняется

Я пытаюсь создать правило 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.

Связанный контент