udev ACTION=change kommt immer doppelt?

Sound, Digitalkameras, TV+Video und Spiele.
Antworten
reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

udev ACTION=change kommt immer doppelt?

Beitrag von reox » 23.12.2017 18:18:49

ich bastel gerade an einer Lösung zwischen DVDs und BluRays zu unterscheiden und nur die letzteren zu mounten...
Dazu würde ich gerne udev verwenden, allerdings erhalte ich die ACTION=change immer zweimal...

/etc/udev/rules.d/82-cdrom.rules schaut jetzt so aus:

Code: Alles auswählen

KERNEL=="sr0", SUBSYSTEM=="block", ENV{ID_PATH}=="pci-0000:00:1f.2-ata-3", ACTION=="change", RUN+="/home/kodi/kodi-play-disc.sh"
und ein sudo udevadm monitor sagt mir das hier:

Code: Alles auswählen

# einlegen
KERNEL[2788.248711] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
KERNEL[2800.610156] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
UDEV  [2808.030761] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
UDEV  [2813.121742] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)

# auswerfen
KERNEL[2820.763580] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
KERNEL[2824.072571] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
UDEV  [2824.139488] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
UDEV  [2826.944473] change   /devices/pci0000:00/0000:00:1f.2/ata3/host2/target2:0:0/2:0:0:0/block/sr0 (block)
Gibt es irgendein Argument das ich mitgeben kann um nur einen der beiden zu bekommen? Eigentlich möchte ich nur einmal informiert werden wenn die Disk eingelegt wird und einmal wenn sie ausgeworfen wird...
Mit udevadm info -a -p $(udevadm info -q path -n /dev/sr0) habe ich auch schon versucht irgendwas zu finden aber das unterscheidet sich nicht wenn eine Disk eingelegt ist oder nicht.

reox
Beiträge: 2463
Registriert: 06.06.2006 22:09:47
Lizenz eigener Beiträge: MIT Lizenz

Re: udev ACTION=change kommt immer doppelt?

Beitrag von reox » 26.12.2017 20:41:07

Also gelöst hab ich es bis jetzt noch nicht - aber zumindest einen Workaround gebastelt: Das script prüft einfach ob eine Datei in den letzten 5 Sekunden modifiziert wurde und beendet sich sonst.

Code: Alles auswählen

#!/bin/bash
RUNFILE="/var/tmp/somefile"
if [ -f "$RUNFILE" ]; then
    if [ $(($(date +%s) - 5)) -lt $(stat --format="%Y" $RUNFILE) ]; then
        exit
    fi
fi

# Do stuff

touch $RUNFILE

Antworten