Tente esta sugestão: link
Tenho quase certeza de que isso tem a ver com sinais e processamento do udev.
No meu script bash eu montei partições, verifiquei, copiei arquivos para eles e desmonte. 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.
Observação: sei que posso alterar o comportamento disso nas configurações do sistema, Detalhes, Mídia removível, Never prompt or start programs on media insertion
, mas não desejo alterar o comportamento. Se um pendrive estiver conectado, eu só quero impedi-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 ele for finalizado de forma anormal, ele deixará as configurações modificadas no lugar (também não acredito que seja necessário fazer isso). / p>
Na verdade, essa exibição automática não parece consistente. Se eu fizer exatamente o mesmo comando do terminal, o Nautilus não aparece, e sei que existem outras montagens no meu script que não aparecem. Então, o que poderia estar causando isso? Aqui está um exemplo do código (ambos causam janelas nautilus separadas para pop):
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 isso não acontece, se eu montar a partição do terminal). E qual é a melhor maneira de impedir que isso aconteça?
Eu notei esse comportamento a partir da versão 11.10 (se bem me lembro). No momento, estou executando o 12.04, mas o script precisa funcionar em todos os releases suportados. Não acredito que a solução deva envolver modificações nas configurações do sistema (que podem ser diferentes entre as versões). Por exemplo, se você olhar para outras coisas que montam partições (como os-prober), não há janelas nautilus aparecendo quando monta partições diferentes.
O script pode ser encontrado aqui . E aqui está a parte onde o Nautilus aparece. Eu acho que também aparece aqui , mas eu tenho focado meu teste no primeiro link. Este é onde ele não aparece, chamado antes desses outros montagens - note que eu reescrevi os primeiros como --read-only e dentro de uma declaração if e não faz diferença.
O ideal é que a resposta explique por que isso está acontecendo e como evitá-lo, em outras palavras, explique por que o script mount
no script é tratado de maneira diferente daquele emitido 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 desktop (Ubuntu, Kubuntu, xubuntu, lubuntu etc) - Eu também quero evitar um aumento exponencial nos testes para verificá-lo.
Obrigado antecipadamente
============
Solução de acordo com o link 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 alcança o resultado desejado, mas parece uma abordagem de marreta. Acredito que provavelmente há um ajuste fino no udev que permitirá que a partição ainda seja mostrada 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
Eu continuarei jogando com udev
e também enviei um bug , já que isso não Não faz sentido que uma partição que não está inserida funcione como um cartão USB / media inserido após a montagem. Além disso, a udevadm trigger
não é uma operação barata que aparece (no mínimo em 12.04) para congelar temporariamente tudo.
Então, em resumo, eu tenho uma solução viável (graças a todos que ajudaram), que eu posso ou não implementar (ainda não tenho certeza); mas vou continuar procurando por outra coisa. Obrigado
Tente esta sugestão: link
Tenho quase certeza de que isso tem a ver com sinais e processamento do udev.
Tente envolver seu script:
#!/bin/bash
#
# disable nautilus automount
#
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount false
# put your script here
#
...
# enable back nautilus automount
#
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount true
Não foi testado porque estou em 10.04
ATUALIZAÇÃO:
#!/bin/bash
#
# disable nautilus automount
#
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount false
# put CALLING your script here to survive its crashes
#
/bin/bash -c "/whenever/it/is/placed/script.sh"
# enable back nautilus automount
#
gconftool --type Boolean --set /apps/nautilus/preferences/media_automount true
Você pode impedir a automontagem 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:
udevadm info -a --name=sdb1
Esse script deve ser colocado na pasta /etc/udev/rules.d com nome de arquivo especial, por exemplo, 81-usb-wubi-move.rules
A regra pode parecer
ACTION=="add", KERNEL=="sdb?", SUBSYSTEMS=="usb", ATTRS{serial}=="001CC07CEE5EFB91C91B235C", ENV{UDISKS_PRESENTATION_HIDE}="1", ENV{UDISKS_PRESENTATION_NOPOLICY}="1"
Veja também:
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 um subdiretório / tmp possuído e protegido por outra pessoa
Lembre-se de que pode ser uma má idéia 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 como "não fazer nada" e isso pode evitar o popup.
A documentação no link pode ser útil para 9,10 mas não funcionou com 12,04. As chaves para o gconf-editor que eles mencionam não são mais usadas.
Teste mount
com os sinalizadores -n
e -i
.