Ich habe Probleme mit nicht laufenden udev-Regeln. Hier ist ein Beispiel:
Ich habe eine Regel, /etc/udev/rules.d/99-test.rulesdie enthält:
ACTION=="add", SUBSYSTEM=="pci", ATTR{vendor}=="0x8086", RUN+="/sayhi"
Und hat sayhieinfach:
#!/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 /saidhientweder 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 30oder 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 30vor der dateZeile im sayhiSkript 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?