Ich habe Probleme mit nicht laufenden udev-Regeln. Hier ist ein Beispiel:
Ich habe eine Regel, /etc/udev/rules.d/99-test.rules
die enthält:
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", RUN+="/sayhi"
Und hat sayhi
einfach:
#!/bin/bash
date +"%Y-%m-%d %H:%M:%S,%3N" >> /saidhi
Da es sich um eine Intel-Maschine handelt, habe ich offensichtlich viele Hersteller von 0x8086-PCI-Geräten:
root@imtrobot:~# lspci -n |grep 8086
00:00.0 0600: 8086:2770 (rev 02)
00:02.0 0300: 8086:2772 (rev 02)
00:1d.0 0c03: 8086:27c8 (rev 01)
[ etc. 12 lines total ]
Und doch wird beim Booten /saidhi
entweder gar nichts erstellt oder es werden 1 oder 2 Datumszeilen darin sein.
Wenn nach dem Booten, laufe ich udevadm trigger --action=add --subsystem-match=pci
dann /saidhi
erhalten genau die richtige Anzahl von Terminen hinzugefügt.
Warum funktioniert das während des Startvorgangs nicht?
sleep 30
oder wie lange dies angemessen ist. Oder Sie könnten (möglicherweise?) Abfragen, ob das Verzeichnis mit existiert [ -e / ]
. Ich bin mir nicht sicher, ob du es dir ansehen kannst /
, also vielleicht [ -e /tmp ]
stattdessen.
sleep 30
vor der date
Zeile im sayhi
Skript hatte keine Auswirkung. Vielleicht ist das nicht das Problem.
/
nicht gemountet, wird das udev-Skript niemals aufgerufen. Booten Sie in x? Vielleicht ist es besser, Skripte auszuführen, wenn die GUI geladen wird?