Não é possível executar o script da regra do udev [closed]

2

Estou tentando criar regras do udev no Ubuntu 17.10. Depois de horas de teste, acabei desesperadamente com as seguintes regras em /etc/udev/rules.d/98-intelpwm.rules :

(é apenas para teste!)

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

O script em si:

$ 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

Quando executo udevadm test /module/usb_storage , posso ver que a regra é acionada, mas o test.output não é criado (ou, se eu criá-lo manualmente, ele não é atualizado).

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.

O que estou perdendo?

    
por Aleksandr 22.10.2017 / 01:11

1 resposta

0

Para aplicar a regra udev , você precisa usar udevadm trigger . Além disso, você pode informar a udevadm trigger qual evento de ação é acionado.

Se você acabou de executar udevadm trigger , todos os dispositivos serão acionados e haverá algumas ações add que acionarão seu script porque ele é válido para todos os dispositivos.
Se você deseja executar a regra udev para um dispositivo específico que já está disponível, talvez seja necessário adicionar a opção -c, --action=ACTION .

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

Recomendamos enfaticamente limitar as correspondências de sua regra udev porque, no momento, ela corresponde a qualquer dispositivo e o seu script será executado várias vezes.

    
por Thomas 22.10.2017 / 11:52