Невозможно выполнить сценарий из правила udev [закрыто]

Я пытаюсь создать udev правила в Ubuntu 17.10. После нескольких часов тестирования я в отчаянии пришел к следующим правилам в /etc/udev/rules.d/98-intelpwm.rules :

(только для тестирования!)

ACTION=="add", RUN+="/home/user/intel_gpu/test.sh"

Скрипт сам:

$ ll /home/user/intel_gpu/test.sh
-rwxrwxrwx 1 user user 56 Oct 22 01:38 /home/user/intel_gpu/test.sh*

#!/bin/sh
/bin/echo 1 >> /home/user/intel_gpu/test.output

Когда я запускаю udevadm test / module / usb_storage , я вижу, что правило срабатывает, но test.output не создается (или, если я создаю его вручную, это не так обновлено).

calling: test
version 234
This program is for debugging only, it does not run any program
specified by a RUN key. It may show incorrect results, because
some values may be different, or not available at a simulation run.

=== trie on-disk ===
tool version:          234
file size:         9138024 bytes
header size             80 bytes
strings            1910832 bytes
nodes              7227112 bytes
Load module index
Failed to read $container of PID 1, ignoring: Permission denied
Found container virtualization none.
timestamp of '/etc/systemd/network' changed
timestamp of '/lib/systemd/network' changed
Parsed configuration file /lib/systemd/network/99-default.link
Created link configuration context.
timestamp of '/etc/udev/rules.d' changed
Reading rules file: /lib/udev/rules.d/39-usbmuxd.rules
Reading rules file: /lib/udev/rules.d/40-usb-media-players.rules
...
Reading rules file: /etc/udev/rules.d/98-intelpwm.rules
Reading rules file: /lib/udev/rules.d/99-systemd.rules
rules contain 393216 bytes tokens (32768 * 12 bytes), 35397 bytes strings
27571 strings (233697 bytes), 24356 de-duplicated (201516 bytes), 3216 trie nodes used
value '[dmi/id]sys_vendor' is 'ASUSTeK COMPUTER INC.'
value '[dmi/id]sys_vendor' is 'ASUSTeK COMPUTER INC.'
RUN '/home/user/intel_gpu/test.sh' /etc/udev/rules.d/98-intelpwm.rules:1
ACTION=add
DEVPATH=/module/usb_storage
SUBSYSTEM=module
USEC_INITIALIZED=4988363806
run: '/home/user/intel_gpu/test.sh'
Unload module index
Unloaded link configuration context.

Что мне не хватает?

2
задан 16 April 2018 в 22:31

1 ответ

Для применения эти udev правило необходимо использовать udevadm trigger. Дополнительно можно сказать udevadm trigger который событие действия инициировать.

, Если Вы просто работаете udevadm trigger, все устройства инициированы и будут приблизительно add действия, которые инициируют Ваш сценарий, потому что это допустимо для всех устройств.
, Если требуется работать эти udev правило для определенного устройства, которое уже доступно, Вам, возможно, придется добавить -c, --action=ACTION опция.

udevadm trigger --action=add /sys/<path-to-your-device>

я настоятельно рекомендовал бы ограничить соответствия Вашего udev правило, потому что в данный момент оно действительно соответствует для любого устройства, и Вы пишете сценарий, будет работать многократно.

0
ответ дан 2 December 2019 в 08:29

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

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