Como posso suspender temporariamente a automontagem do sistema de arquivos Nautilus, sem fazer alterações permanentes no sistema e na configuração do usuário?

6

Eu escrevi uma ferramenta que automaticamente formata e copia arquivos para unidades flash USB quando eles são inseridos. Ele precisa que a unidade seja desmontada para formatá-lo.

Normalmente, o Nautilus montará automaticamente a unidade quando inserida, portanto, preciso esperar que isso aconteça e, em seguida, desmonte a unidade antes de formatá-la. O único problema é que, se o usuário tiver desativado a automontagem, meu programa esperará para sempre.

Eu poderia alterar a configuração de montagem automática do dconf quando meu programa for iniciado e, em seguida, alterá-lo novamente ao sair, mas isso não é uma boa solução porque a configuração não será restaurada se meu programa travar.

Como posso impedir temporariamente que o Nautilus automupere unidades USB apenas durante o tempo em que meu programa está em execução?

    
por Alistair Buxton 20.11.2012 / 15:52

2 respostas

1

Você pode usar PROGRAM para verificar se seu programa está em execução para ativar essa regra UDEV, caso contrário, ela será desativada porque pgrep retorna sem sucesso.

  

PROGRAMA

     

Execute um programa para determinar se existe uma correspondência; a chave é verdadeira se o programa retornar com sucesso . As propriedades do dispositivo são disponibilizadas para o programa executado no ambiente. A saída padrão do programa está disponível na chave RESULT.

     

Isso só pode ser usado para tarefas de primeiro plano com execução muito curta. Para mais detalhes, consulte EXECUTAR.

source: man udev

  1. Adicione um novo arquivo de regras

    /etc/udev/rules.d/90-prevent-auto-mount.rules

    ACTION=="add", KERNEL="sd[a-z][0-9]*", DRIVERS=="usb-storage", PROGRAM="/usr/bin/pgrep yourprogramname", ENV{UDISKS_IGNORE}="1"
    
  2. Recarregue as regras

    sudo control --reload-rules
    

BTW, udisk2 é o responsável pela montagem automática

    
por user.dz 12.07.2015 / 12:08
0

UPDATE: ignorei a especificação mais importante: "sem fazer alterações permanentes no sistema". Ainda solucionável, eu diria, mas não sem um profundo trabalho de pesquisa sobre o ciclo de vida da sessão de área de trabalho ou o gerenciamento de eventos na área de trabalho. Essa não é minha especialidade. ;)

Obviamente, você já sabe como desativar o recurso em questão. Se você está preocupado com a possibilidade de não voltar se o seu programa travar, existem apenas duas possibilidades: Tome cuidado para que seu programa não trave ou programe um programa que observe seu programa e troque o recurso de volta quando seu programa não estiver rodando.

Mas talvez haja uma solução diferente. Você pode acrescentar uma linha como essa a /etc/fstab :

LABEL=somemagic /path ntfs noauto,user 0 0

Então, se o sistema de arquivos na unidade tiver esse rótulo, ele permanecerá intocado pelo recurso de montagem automática e você poderá (u) montá-lo sem interferências. Veja man mount e man fstab para detalhes. Você também pode usar o UUID em vez de LABEL, mas isso depende do seu caso de uso e sistema de arquivos.

    
por Johannes 26.08.2013 / 13:54