Я хочу подключить внешний жесткий диск в горячем режиме, смонтировать его и автоматически запустить Unison File Synchronizer.
Я сделал правило udev под названием /etc/udev/rules.d/100-sync.rules
ACTION=="добавить", SUBSYSTEMS=="usb", ENV{DEVTYPE}=="usb_device", ATTRS{idVendor}=="wxyz", ATTRS{idProduct}=="wxyz", RUN+="/home/ Уильям/sync.sh"
Он запускает этот скрипт:
#!/бин/баш
mkdir/медиа/уильям/Резервное копирование
mount -U <my_drives_uuid> /media/william/Backup
su william -c 'уведомить-отправить "Unison" "Начало синхронизации"'
su william -c 'unison Desktop_Ext_local_connection.prf -silent > /home/william/unison_errors.log'
su william -c 'уведомить-отправить "Unison" "Завершенная синхронизация"'
размонтировать /медиа/уильям/резервное копирование
rmdir/медиа/уильям/Резервное копирование
Запуск сценария из корневой оболочки работает должным образом, однако, когда он запускается udev, диск не монтируется. (Я все еще получаю системные уведомления и создание/уничтожение каталога)
На основе это, я думаю, что это не работает, потому что udev использует другое пространство имен. Я пытался создать файл /etc/systemd/система/systemd-udevd.service
с содержимым
[Оказание услуг]
MountFlags=shared *(или PrivateMounts=no)*
Однако это не меняет поведение - оно по-прежнему не монтируется. (да, я перезапустил демон)
Как смонтировать диск с помощью udev?
После того, как мой сценарий выполнен, Ubuntu автоматически монтирует диск. Есть ли обходной путь, позволяющий Ubuntu монтировать диск до того, как udev запустит мой скрипт?
Я не вижу ни одного правила udev, которое Ubuntu использует для монтирования диска, содержимое /etc/udev/rules.d
просто
100-sync.rules 70-snap.snapd.rules 70-snap.snap-store.rules
Итак, как Ubuntu монтирует диск после того, как мой скрипт выполнен, и как я могу изменить порядок, чтобы они монтировались первыми?
Я использую Ubuntu 20.04.3 LTS, та же проблема возникает на моем ноутбуке под управлением 21.04.