En mi script bash monto particiones, las reviso, les copio archivos y las desmonto. Cuando el script monta la partición, Nautilus aparece con una ventana que muestra la partición y roba el foco. Esto es algo que quiero evitar.
Nota: Sé que puedo cambiar el comportamiento de esto en Configuración del sistema, Detalles, Medios extraíbles, Never prompt or start programs on media insertion
pero no quiero cambiar el comportamiento, por ejemplo, si hay una memoria USB conectada, solo quiero evitarlo en mi script bash. . Dado que este script se ejecuta en las computadoras de otros usuarios, no puedo modificar estas configuraciones (en el script) porque si se finaliza de manera anormal dejará las configuraciones modificadas en su lugar (tampoco creo que sea necesario hacer esto).
En realidad, esta visualización automática no parece consistente. Si hago exactamente el mismo comando desde la terminal, Nautilus no se muestra y sé que hay otros montajes en mi secuencia de comandos que no se muestran. Entonces, ¿qué podría estar causando esto? Aquí hay un ejemplo del código (ambos hacen que aparezcan ventanas Nautilus separadas):
mount $dev $target
mkdir -p $target/home
mount $homedev $target/home
Estoy interesado en comprender el proceso mediante el cual el montaje señala a Nautilus y por qué sucede esto (cuando no sucede si monto la partición desde la terminal). Y cuál es la mejor manera de evitar que esto suceda.
Noté este comportamiento a partir de la versión 11.10 (si mal no recuerdo). Actualmente estoy ejecutando 12.04, pero el script debe funcionar en todas las versiones compatibles. No creo que la solución deba implicar modificar la configuración del sistema (que puede diferir entre versiones). Por ejemplo, si observa otras cosas que montan particiones (como os-prober), no aparece ninguna ventana de Nautilus cuando monta diferentes particiones.
El guión se puede encontrar.aquí. Yaquí está la partedonde aparece Nautilus. Creo que también apareceaquí, pero he centrado mis pruebas en el primer enlace.Estees donde no aparece, llamado antes de esos otros montajes; tenga en cuenta que he reescrito los primeros como --solo lectura y dentro de una declaración if y no hace ninguna diferencia.
Idealmente, la respuesta explicará por qué sucede esto y cómo evitarlo; en otras palabras, explicará por qué el script mount
se trata de manera diferente al emitido desde una terminal. También se aceptará una buena solución alternativa si es una solución completamente explicada y práctica que pueda admitir todos los entornos de escritorio (ubuntu, kubuntu, xubuntu, lubuntu, etc.). También quiero evitar un aumento exponencial en las pruebas para verificarlo.
gracias de antemano
=============
Solución segúnpapashouenlace de:
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
}
Esto logra el resultado deseado, pero se siente como un enfoque de maza. Creo que probablemente haya un ajuste en udev que permitirá que la partición aún se muestre en Nautilus (y otros exploradores de archivos) sin aparecer cuando esté montada. Por cierto, si alguien quiere probar esto, el siguiente script mostrará el efecto emergente de 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
Voy a seguir jugando udev
y también he presentado unabicho, ya que esto no tiene ningún sentido que una partición que no está insertada actúe como una tarjeta USB/media insertada al montarla. Además, udevadm trigger
no es una operación económica que parece (al menos el 12.04) congelar todo temporalmente.
Entonces, en resumen, tengo una solución viable (gracias a todos los que ayudaron), que puedo implementar o no (aún no estoy seguro); pero seguiré buscando algo más. Gracias
Respuesta1
Pruebe esta sugerencia:http://www.worldofnubcraft.com/969/hide-your-disks-or-partitions-from-nautilus/
Estoy bastante seguro de que tiene que ver con las señales y el procesamiento de udev.
Respuesta2
Intente ajustar su 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
No probado porque estoy en 10.04
ACTUALIZAR:
#!/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
Respuesta3
Puede evitar el montaje automático de la unidad flash agregando una nueva regla udev. En esa regla puedes especificar una unidad flash por su proveedor, número de serie y otros atributos. VerATRIBUTOS{}líneas en la salida de:
udevadm info -a --name=sdb1
Ese guión que deberías colocar en/etc/udev/rules.dcarpeta con nombre de archivo especial, por ejemplo 81-reglas-usb-wubi-move
La regla podría verse así
ACTION=="add", KERNEL=="sdb?", SUBSYSTEMS=="usb", ATTRS{serial}=="001CC07CEE5EFB91C91B235C", ENV{UDISKS_PRESENTATION_HIDE}="1", ENV{UDISKS_PRESENTATION_NOPOLICY}="1"
Ver también:
Respuesta4
Pruebe mount
con las banderas -n
y -i
.