В моем скрипте bash я монтирую разделы, проверяю их, копирую в них файлы и размонтирую. Когда скрипт монтирует раздел, Nautilus появляется с окном, показывающим раздел и фокус кражи. Это то, чего я хочу избежать.
Примечание: я знаю, что могу изменить это в Системных настройках, Сведениях, Съемном носителе, Never prompt or start programs on media insertion
но я не хочу менять поведение, например, если USB-накопитель подключен, я просто хочу предотвратить это в моем скрипте bash , Так как этот скрипт запускается на компьютерах других пользователей, я не могу изменить эти настройки (в скрипте), потому что если он ненормально завершится, он оставит измененные настройки на месте (я также не считаю, что это необходимо делать).
На самом деле это автоматическое отображение не кажется последовательным. Если я выполняю ту же самую команду из терминала, Наутилус не отображается, и я знаю, что в моем скрипте есть другие монтирования, которые не отображаются. Так что может быть причиной этого? Вот пример кода (оба вызывают появление отдельных окон nautilus):
mount $dev $target
mkdir -p $target/home
mount $homedev $target/home
Я заинтересован в понимании процесса, которым монтирует сигнал Nautilus и почему это происходит (когда этого не происходит, если я монтирую раздел из терминала). И каков наилучший способ предотвратить это?
Я заметил это поведение начиная с версии 11.10 (если я правильно помню). В настоящее время я использую 12.04, но скрипт должен работать на всех поддерживаемых выпусках. Я не верю, что решение должно включать изменение настроек системы (которые могут отличаться в разных выпусках). Например, если вы посмотрите на другие вещи, которые монтируют разделы (например, os-prober), окна nautilus не появляются, когда он монтирует разные разделы.
Сценарий можно найти здесь . И вот та часть, где появляется Наутилус. Я думаю, что это также появляется здесь , но я сосредоточил свое тестирование на первой ссылке. Это то место , где оно не появляется, вызывается до этих других монтировок - заметьте, я переписал первые как - только для чтения и в операторе if, и это не имеет значения.
В идеале ответ объяснит, почему это происходит и как это предотвратить, другими словами, объяснит, почему сценарий mount
обрабатывается иначе, чем тот, который выдается из терминала. Хороший обходной путь также будет принят, если это полностью объясненное и практичное решение, которое может поддерживать все настольные среды (Ubuntu, Kubuntu, Xubuntu, Lubuntu и т. Д.) - я также хочу избежать экспоненциального увеличения тестирования для его проверки.
заранее спасибо
============
Решение по ссылке Папашу :
add_udev_rules ()
{
for i in "$dev" "$homedev" "$bootdev" "$usrdev"; do
if [ -n "$i" ]; then
block=${i#/dev/}
echo "KERNEL==\"""$block""\",ENV{UDISKS_PRESENTATION_HIDE}=\"1\"" >> "$wubi_move_dir"/wubi_move.rules
fi
done
cp "$wubi_move_dir"/wubi_move.rules /etc/udev/rules.d/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
remove_udev_rules ()
{
rm /etc/udev/rules.d/wubi_move.rules
rm "$wubi_move_dir"/wubi_move.rules
udevadm trigger > /dev/null 2>&1
}
Это достигает желаемого результата, но похоже на кувалду. Я полагаю, что в udev есть тонкая настройка, которая позволит разделу по-прежнему отображаться в Nautilus (и других файловых браузерах) без всплывающего окна при подключении. Кстати, если кто-то захочет попробовать это, следующий скрипт покажет эффект nautilus:
mkdir -p /tmp/testmount
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
mount /dev/sda1 /tmp/testmount
sleep 3
umount /dev/sda1
rmdir /tmp/testmount
Я собираюсь продолжить играть, udev
и я также подал ошибку , так как это не имеет никакого смысла для раздела, который не вставлен, чтобы действовать как вставленная карта USB / медиа при монтировании. Также udevadm trigger
не недорогая операция, которая появляется (по крайней мере, 12.04), чтобы временно заморозить все.
Итак, в итоге, у меня есть работоспособное решение (спасибо всем, кто помог), которое я могу или не могу реализовать (пока не уверен); но я буду продолжать искать что-то еще. Спасибо
Ответы:
Попробуйте это предложение: http://www.worldofnubcraft.com/969/hide-your-disks-or-partitions-from-nautilus/
Я уверен, что это связано с сигналами и обработкой udev.
источник
udevadm trigger
. Просто хочу подтвердить, что это работает в сценарии. Я опубликую детали в вопросе, если вы не добавили больше здесь.Попробуйте обернуть ваш скрипт:
Не проверено, потому что я на 10.04
ОБНОВИТЬ:
источник
Вы можете предотвратить автоматическое монтирование флешки, добавив новое правило udev. В этом правиле вы можете указать флешку по ее производителю, серийному номеру, другим атрибутам. Посмотрите строки ATTRS {} в выводе:
Этот скрипт вы должны поместить в папку /etc/udev/rules.d со специальным именем файла, например, 81-usb-wubi-move.rules.
Правило может выглядеть так
Смотрите также:
источник
mount
из терминала), но если я получу хороший обходной путь, я тоже приму это.Не проверено .... просто догадка.
Смонтируйте файловую систему в дереве, недоступном для пользователя nautilus, например, в подкаталоге / root или / home / somebodyelse или подкаталоге / tmp, принадлежащем и защищенном кем-то другим
Имейте в виду, что может быть плохой идеей монтировать одно и то же аппаратное устройство в двух точках монтирования и изменять его из обеих.
Некоторая человеческая конфигурация возможна в (12.04beta) Ubuntu-> Настройки системы-> Детали-> Съемные носители. Некоторые из параметров могут быть установлены на «ничего не делать», и это может избежать всплывающего окна.
Документация по адресу https://help.ubuntu.com/community/Mount/USB может быть полезна для 9.10, но не работает с 12.04. Ключи для gconf-editor, которые они упоминают, больше не используются.
источник
chmod 700
на директории ... выглядел многообещающе, а затем вверх выскочил окно сообщения (без заголовка окна): «Невозможно открыть папку для файловой системы 10 ГБ», «Ни одно приложение не зарегистрировано для обработки этого файла»Попробуйте
mount
с-n
и-i
флагами.источник