12 Jun
2021
12 Jun
'21
4:43 p.m.
El sáb, 12 jun 2021 a las 17:43, mpan via arch-general (<arch-general@lists.archlinux.org>) escribió: > > If the command shares any resources, and name “autobackup” suggests > it does, it should include some mechanism that prevents concurrent > execution if another instance is already running. Otherwise, even if a > single match happens, multiple instances of the script may be executed. > For USB devices that may be a tiny power interruption during insertion, > causing it to be detected, removed, detected again: > > insertion - - - removal - - - insertion - - - - - - - > |-- script ---------------------------------------> \_ two instances > |-- script ---------> / of the code > > It should be either of those: > |-- script -------------------------------------------------> > |--- BAIL OUT! -| > or > |-- script --------------------------------- end| > |-- WAIT .......... script ---> > > > SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="058f", > > ATTRS{idProduct}=="6387", SYMLINK+="external%n", > > RUN+="/usr/local/bin/autobackup.sh" > > > > This works well, buth exec 2 times the script... > > > > Jun 12 13:53:09 archlaptop autobackup.sh: BEGIN SCRIPT > > Jun 12 13:53:13 archlaptop autobackup.sh: BEGIN SCRIPT > Because there are two matches for that pattern: > - //devices/platform/…/target0:0:0/0:0:0:0/block/sda > - //devices/platform/…/target0:0:0/0:0:0:0/block/sda/sda1 > Both of them have SUBSYSTEM=="block", ACTION=="add", > ATTRS{idVendor}=="058f" and ATTRS{idProduct}=="6387". > > > If add ENV{DEVTYPE}=="usb_device" and change the > > SUBSYSTEM=="usb_device" , when plug usb, udev does nothing ... > Because there is nothing that matches SUBSYSTEM=="usb_device". > Hi, thanks for your response. I understand, I add the size of partition sda1 for only match pattern --> ATTR{size}=="3930112" SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="058f", ATTRS{idProduct}=="6387", ATTR{size}=="3930112", SYMLINK+="external%n", RUN+="/usr/local/bin/autobackup.sh" And now, only exec the script one time. The name of device change when connect different port usb... I have to put a more precise and less ugly rule. Maybe with KERNEL variable --> KERNEL=="sd*1" : SUBSYSTEM=="block", ACTION=="add", ATTRS{idVendor}=="058f", ATTRS{idProduct}=="6387", KERNEL=="sd*1", SYMLINK+="external%n", RUN+="/usr/local/bin/autobackup.sh" With these, works well! Thanks.