Vreau să conectez la cald un hard disk extern, să îl montez și să rulez automat Unison File Synchronizer.
Am făcut o regulă udev numită /etc/udev/rules.d/100-sync.rules
ACTION=="add", SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="wxyz", ATTRS{idProduct}=="wxyz", RUN+="/home/ william/sync.sh"
Acesta declanșează acest script:
#!/bin/bash
mkdir /media/william/Backup
mount -U <my_drives_uuid> /media/william/Backup
su william -c 'notify-send "Unison" "Starting Sync"'
su william -c 'unison Desktop_Ext_local_connection.prf -silent > /home/william/unison_errors.log'
su william -c 'notify-send "Unison" "Finished Sync"'
umount /media/william/Backup
rmdir /media/william/Backup
Rularea scriptului dintr-un shell rădăcină funcționează conform așteptărilor, totuși, atunci când este declanșat de udev, unitatea nu se montează. (Încă primesc notificări de sistem și crearea/distrugerea directoarelor)
Bazat pe acest, cred că nu funcționează pentru că udev folosește un spațiu de nume diferit. Am încercat să creez un fișier /etc/systemd/system/systemd-udevd.service
cu continutul
[Serviciu]
MountFlags=shared *(și alternativ PrivateMounts=nu)*
Totuși, acest lucru nu schimbă comportamentul - încă nu se montează. (da, am repornit demonul)
Cum pot face ca unitatea să se monteze folosind udev?
După ce scriptul meu este terminat, Ubuntu montează automat unitatea. Există vreo lucrare prin care Ubuntu să monteze unitatea înainte ca udev să-mi ruleze scriptul?
Nu văd nicio regulă udev pe care Ubuntu o folosește pentru a monta unitatea, conținutul /etc/udev/rules.d
sunt doar
100-snap.rules 70-snap.snapd.rules 70-snap.snap-store.rules
Deci, cum montează Ubuntu unitatea după ce scriptul meu este terminat și cum pot schimba ordinea astfel încât acestea să fie montate mai întâi?
Folosesc Ubuntu 20.04.3 LTS, aceeași problemă apare pe laptopul meu care rulează 21.04