Команды запуска udev Run не работают

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

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

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

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

6 ответов

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

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

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

4
ответ дан 25 May 2018 в 18:21
  • 1
    Кажется, что работает только самая простая команда. Скрипты не запускаются ни даже, когда задан весь путь – Andrew Redd 11 October 2011 в 03:03
  • 2
    Отправьте полный сценарий, который вы пытаетесь запустить. Имейте в виду, что сценарий запускается как root, а не как обычный пользователь. – arrange 11 October 2011 в 12:56
  • 3
    Я обнаружил, что у меня был неудачный путь к башу. Теперь скрипт для добавления работает, но правило удаления не запускается. Я задам другой вопрос. – Andrew Redd 12 October 2011 в 03:41

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

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

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

4
ответ дан 2 August 2018 в 02:53

У меня была такая же проблема с 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
ответ дан 25 May 2018 в 18:21

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

3
ответ дан 25 May 2018 в 18:21

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

3
ответ дан 31 July 2018 в 11:19

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

3
ответ дан 7 August 2018 в 20:47

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

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