Как я могу временно приостановить автоматическое монтирование файловой системы Nautilus, не внося постоянные изменения в конфигурацию системы и пользователя?

Я написал инструмент, который автоматически форматирует и копирует файлы на USB-накопители, когда они вставлены. Для его форматирования необходимо отключить диск.

Обычно Nautilus автоматически монтирует диск, когда он вставлен, поэтому мне нужно подождать, пока это произойдет, и затем отмонтировать диск перед его форматированием. Единственная проблема в том, что если пользователь отключил автомонтирование, моя программа будет ждать вечно.

Я мог бы изменить настройку автоматического монтирования dconf при запуске моей программы, а затем изменить ее обратно, когда она выйдет, но это не очень хорошее решение, поскольку настройка не будет восстановлена ​​в случае сбоя программы.

Как временно запретить Nautilus автоматически подключать USB-накопители только во время работы моей программы?

6
задан 20 November 2012 в 18:52

2 ответа

Вы можете использовать PROGRAM, чтобы проверить, запущена ли ваша программа для активации этого правила UDEV, в противном случае оно отключено, поскольку pgrep возвращает неудачно.

PROGRAM

Выполнить программу, чтобы определить, есть ли совпадение; ключ верен, если программа успешно возвращается . Свойства устройства становятся доступными для исполняемой программы в среде. Стандартный вывод программы доступен через клавишу RESULT.

Это можно использовать только для очень коротких задач переднего плана. Подробнее см. RUN.

источник: man udev

  1. Добавить новый файл правил

    /etc/udev/rules.d/90-prevent-auto-mount.rules

    ACTION=="add", KERNEL="sd[a-z][0-9]*", DRIVERS=="usb-storage", PROGRAM="/usr/bin/pgrep yourprogramname", ENV{UDISKS_IGNORE}="1"
    
    [ 117]
  2. Перезагрузить правила

    sudo control --reload-rules
    

Кстати, udisk2 - это тот, кто отвечает за автонастройку

0
ответ дан 20 November 2012 в 18:52

ОБНОВЛЕНИЕ: я проигнорировал самую важную спецификацию: «без внесения постоянных изменений в систему». Я бы сказал, что все еще можно решить, но не без глубоких исследований жизненного цикла настольных сессий или обработки событий на рабочем столе. Это не моя экспертиза. ;)

Очевидно, вы уже знаете, как отключить данную функцию. Если вы обеспокоены тем, что он не переключается обратно в случае сбоя вашей программы, тогда есть только две возможности: позаботьтесь о том, чтобы ваша программа не аварийно завершала работу, или запрограммируйте программу, которая просматривает вашу программу и переключает функцию обратно, когда ваша программа не запущена.

Но, возможно, есть другое решение. Вы можете добавить строку, подобную этой, к /etc/fstab:

LABEL=somemagic /path ntfs noauto,user 0 0

Тогда, если файловая система на диске несет эту метку, она остается неизменной функцией автоматического монтирования, и вы можете (u) смонтировать ее без помех. См. man mount и man fstab для деталей. Вы также можете использовать UUID вместо LABEL, но это зависит от вашего варианта использования и файловой системы.

0
ответ дан 20 November 2012 в 18:52

Другие вопросы по тегам:

Похожие вопросы: