Welche Art von Geräteereignissen stimmen in udev mit ACTION=="change" überein?

Welche Art von Geräteereignissen stimmen in udev mit ACTION=="change" überein?

Die udevRegeln, die ich bisher erstellt habe, beziehen sich nur auf das Hinzufügen oder Entfernen von Geräten, und zwar:

ACTION=="add"...oderACTION=="remove"...

Ich bin aufein Beispieleiner Regel, die sich mit Geräte-Statusänderungensowie:

ACTION=="add|change", KERNEL=="sd[b-z]", ATTR{queue/rotational}=="1", RUN+="/usr/bin/hdparm -B 127 -S 12 /dev/%k"

Ich gehe davon aus, dass die obige Regel immer dann gilt, wenn ein passendes GeräthinzugefügtODER sein ZustandÄnderungen.

Frage:Welche Zustandsänderungen sind möglich (allgemein und speziell für eine USB-Festplatte)?

Ich habe die gesamte Udev-Dokumentation geprüft, die ich finden konnte, und es gibt kaum Erwähnungen oder Verwendungshinweise zu Gerätestatusänderungen oder speziell dazu ACTION="change".

Antwort1

„Ändern“ entspricht beispielsweise dem Entfernen oder Einsetzen einer SD-Karte in einem SD-Kartenleser oder dem Wechseln der Festplatte in einem USB-zu-SATA-Gehäuse. Das Gerät selbst wird weder hinzugefügt noch entfernt, aber das Medium ist nicht mehr dasselbe.

Antwort2

Das Udev-Änderungsereignis wird ausgelöst, wenn der Medienwechsler (in Bezug auf Band – Netbackup-ähnliche Umgebung) oder der SD-Kartenleser weiterhin mit einem anderen Medium oder einer anderen SD-Karte verwendet wird. Wenn dasselbe Gerät erneut hinzugefügt wird (eine SAN-Festplatte wird erneut hinzugefügt oder Sie deaktivieren/aktivieren den Switch auf der Switch-Seite oder deaktivieren/aktivieren den Zielport auf der Zielseite)

Nachfolgend sind die wenigen Udev-Änderungsereignisse aufgeführt, die wir auf der Hostseite sehen, wenn ich den Zielport (vom Vexata VX100-Array) für einen vorhandenen San Lun deaktiviert habe.

KERNEL[34942.047543] change   /devices/virtual/block/dm-0 (block)
KERNEL[34942.047596] change   /devices/virtual/block/dm-1 (block)
KERNEL[34942.047613] change   /devices/virtual/block/dm-2 (block)
KERNEL[34942.047631] change   /devices/virtual/block/dm-3 (block)
KERNEL[34942.047678] change   /devices/virtual/block/dm-4 (block)
UDEV  [34942.053448] change   /devices/virtual/block/dm-3 (block)
UDEV  [34942.053486] change   /devices/virtual/block/dm-4 (block)
UDEV  [34942.053507] change   /devices/virtual/block/dm-0 (block)
UDEV  [34942.053536] change   /devices/virtual/block/dm-2 (block)

Antwort3

Es bedeutet, dass der Kernel ein uevent ausgegeben hat, um zu melden, dass sich etwas am Gerät geändert hat. Begleitende Ereigniseigenschaften ( ENV) beschreiben, was genau sich geändert hat, und Geräteeigenschaften (ebenfalls ENV), um den Kontext bereitzustellen. Diese unterscheiden sich von den Geräteattributen ( ATTR, die der Dateistruktur unter sysfs entsprechen), und Sie können diese Eigenschaften sehen, indem Sie ausführen sudo udevadm monitor --kernel --udev -p --subsystem-match=usb.

Diese uevents werden von den spezifischen Kernelmodulen ausgelöst, die das Gerät verwalten. Es gibt also keine vollständige Liste oder einen garantierten Satz von Ereignissen. Sie müssen die Dokumentation oder den Quellcode der betreffenden Module auf Aufrufe prüfen kobject_ueventoder kobject_uevent_envsich die Ursache für das Auslösen von Ereignissen ansehen.

verwandte Informationen