Рейтинг:2

Монтирование дисков и Udev — Udev не монтирует диски, а выполняет другие аспекты скрипта.

флаг za

Я хочу подключить внешний жесткий диск в горячем режиме, смонтировать его и автоматически запустить 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.

William Satterthwaite avatar
флаг za
Я нашел работу, где у меня есть 2 сценария. Первый скрипт запускает второй с помощью nohup, а затем завершает работу, позволяя Ubuntu смонтировать диск. Второй ждет 10 секунд, чтобы дать время для маунта, а затем запускает Unison. Я не нахожу эту работу очень удовлетворительной.
William Satterthwaite avatar
флаг za
Я прокомментировал немного в ближайшее время без полного тестирования ... Это не работает, но планирование второго сценария работает. например `сейчас + 1 минута -f sync2.sh`
user.dz avatar
флаг ng
Да, планирование (вытягивание) — это один из способов.
Рейтинг:1
флаг ng

Насколько я знаю, все сценарии udev, включающие монтирование FS, устарели несколько лет назад. Я считаю, что это было изменено примерно в то время системад появился.

Вот справка из udev_237 - человек удев (Убунту_18.04)

ЗАПУСК{тип}

    ï¸

    Обратите внимание, что запущенные программы, которые обращаются к сети или монтирование/размонтирование файловых систем запрещено внутри правил udev, из-за песочницы по умолчанию, которая применяется на systemd-udevd.service.

Лучше использовать решения, использующие библиотеки, такие как udev, udisks, ... Или внешний скрипт, который постоянно следит за этим устройством.

КСТАТИ, 100- слишком рано даже для других приложений (файлы правил udev обрабатываются в лексическом порядке), разумно изменить его на высокое двузначное число. Если вы хотите, чтобы последнее использование 99-

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.