Evite que Nautilus muestre la partición montada en el script bash

Evite que Nautilus muestre la partición montada en el script bash

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 insertionpero 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 mountse 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 udevy 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 triggerno 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 mountcon las banderas -ny -i.

información relacionada