No meu script bash, monto partições, as verifico, copio arquivos para elas e desmonto. Quando o script monta a partição, o Nautilus aparece com uma janela mostrando a partição e roubando o foco. Isso é algo que eu quero evitar.
Nota: Eu sei que posso alterar o comportamento disso em Configurações do sistema, Detalhes, Mídia removível Never prompt or start programs on media insertion
, mas não quero alterar o comportamento, por exemplo, se um pendrive USB estiver conectado, eu só quero evitá-lo no meu script bash . Como esse script é executado nos computadores de outros usuários, não posso modificar essas configurações (no script) porque, se terminar de forma anormal, deixará as configurações modificadas no lugar (também não acredito que seja necessário fazer isso).
Na verdade, essa exibição automática não parece consistente. Se eu executar exatamente o mesmo comando no terminal, o Nautilus não será exibido e sei que existem outras montagens no meu script que não são exibidas. Então, o que poderia estar causando isso? Aqui está um exemplo do código (ambos causam janelas separadas do nautilus):
mount $dev $target
mkdir -p $target/home
mount $homedev $target/home
Estou interessado em entender o processo pelo qual a montagem sinaliza o Nautilus e por que isso está acontecendo (quando não acontece se eu montar a partição a partir do terminal). E qual é a melhor maneira de impedir que isso aconteça.
Percebi esse comportamento a partir do lançamento 11.10 (se bem me lembro). Atualmente, estou executando o 12.04, mas o script deve funcionar em todas as versões suportadas. Não acredito que a solução envolva a modificação das configurações do sistema (que podem diferir entre os lançamentos). Por exemplo, se você observar outras coisas que montam partições (como os-prober), não há janelas do nautilus aparecendo quando ele monta partições diferentes.
O script pode ser encontrado aqui . E aqui está a parte em que o Nautilus aparece. Eu acho que também aparece aqui , mas tenho focado meus testes no primeiro link. Este é o lugar onde ele não aparecer, chamado antes de os outros suportes - nota eu reescrito os primeiros como --read-only e dentro de uma instrução if e não faz diferença.
Idealmente, a resposta explicará por que isso está acontecendo e como evitá-lo, em outras palavras, explicará por que o script mount
é tratado de maneira diferente daquela emitida por um terminal. Uma boa solução alternativa também será aceita se for uma solução totalmente explicada e prática que possa suportar todos os ambientes de área de trabalho (ubuntu, kubuntu, xubuntu, lubuntu etc.) - Eu também quero evitar um aumento exponencial nos testes para verificá-la.
desde já, obrigado
============
Solução conforme link do papashou :
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
}
Isso atinge o resultado desejado, mas parece uma abordagem de marreta. Acredito que provavelmente haja um ajuste fino no udev que permitirá que a partição ainda seja exibida no Nautilus (e em outros navegadores de arquivos) sem aparecer quando estiver montada. A propósito, se alguém quiser tentar isso, o script a seguir mostrará o efeito pop-up do 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
Vou continuar brincando udev
e também registrei um bug , já que isso não faz sentido para uma partição que não está inserida para agir como um cartão de mídia / USB inserido na montagem. Também udevadm trigger
não é uma operação barata que aparece (pelo menos em 12.04) para congelar temporariamente tudo.
Então, em resumo, eu tenho uma solução viável (obrigado a todos que ajudaram), que eu posso ou não implementar (ainda não tenho certeza); mas vou continuar procurando por outra coisa. obrigado
Respostas:
Tente esta sugestão: http://www.worldofnubcraft.com/969/hide-your-disks-or-partitions-from-nautilus/
Tenho certeza que isso tem a ver com sinais e processamento do udev.
fonte
udevadm trigger
. Só quero confirmar que funciona no script. Vou postar os detalhes na pergunta, se você não adicionou mais aqui.Tente agrupar seu script:
Não testado porque estou no 10.04
ATUALIZAR:
fonte
Você pode impedir a montagem automática da unidade flash adicionando uma nova regra do udev. Nessa regra, você pode especificar uma unidade flash por seu fornecedor, número de série e outros atributos. Veja as linhas ATTRS {} na saída de:
Esse script você deve colocar na pasta /etc/udev/rules.d com nome de arquivo especial, por exemplo, 81-usb-wubi-move.rules
A regra pode parecer
Veja também:
fonte
mount
no terminal), mas se eu tiver uma boa solução, também aceitarei isso.Não testado ... apenas um palpite.
Monte o sistema de arquivos em uma árvore inacessível ao usuário do nautilus, por exemplo, em um subdiretório de / root ou / home / someoneelse ou em um subdiretório / tmp pertencente e protegido por outra pessoa
Lembre-se de que pode ser uma má ideia montar o mesmo dispositivo de hardware em dois pontos de montagem e modificá-lo de ambos.
Alguma configuração humana é possível em (12.04beta) Ubuntu-> Configurações do sistema-> Detalhes-> Mídia removível. Algumas das opções podem ser definidas para "não fazer nada" e isso pode evitar o pop-up.
A documentação em https://help.ubuntu.com/community/Mount/USB pode ser útil para a 9.10, mas não funcionou com a 12.04. As chaves do gconf-editor que eles mencionam não são mais usadas.
fonte
chmod 700
no diretório ... parecia promissor e, em seguida, apareceu uma janela de mensagem (sem o título da janela): "Não foi possível abrir uma pasta para o sistema de arquivos de 10 GB", "Nenhum aplicativo está registrado como manipulando este arquivo"Tente
mount
com as bandeiras-n
e-i
.fonte