Conecte-se ao evento mount / umount do linux


9

existe uma maneira de fornecer scripts de pós-montagem e pré-montagem no Linux?
Estou tentando fazer alguns scripts na mídia de armazenamento quando montados e antes da montagem (por exemplo, para sincronização).

Qualquer ajuda apreciada.


Como o sistema de arquivos está sendo montado? As coisas não são montadas automaticamente, presumivelmente, você tem algum programa / ferramenta que está executando a montagem para você. Você precisa determinar o que é isso e substituí-lo ou corrigi-lo.
precisa

No meu caso, eu normalmente uso o subsistema KDE (provavelmente o Dolphin, não sei qual componente é responsável pelo comando de montagem real)
Jörg Haubrichs 27/03/10

11
eu escrevi sobre como lidar com montagens automáticas com o uDev ou com o HALevt em respostas a outra pergunta. esses seriam substitutos para o subsistema KDE ou GVFS, mas o procedimento pode lhe dar algumas idéias de onde procurar. parece que você deseja acessar as montagens do Dbus (área de trabalho / espaço do usuário em vez do nível do kernel).
Quack Quixote 5/05

Respostas:


2

Se você está tentando fazer isso para as pessoas que estão chamando o comando /sbin/mounte /sbin/umount, tudo o que você precisa fazer é criar um programa de wrapper para ambos e programar o que você deseja nesses programas de wrapper.

Um programa de wrapper que está sendo substituído pelo /sbin/mountprograma de wrapper que chama o real /sbin/mount(renomeado para algo como /sbin/mount-realou /sbin/umount-real). Para impedir que alguém chame o programa real, use permissões de grupo para restringi-lo e defina o bit SGID nos programas de wrapper.

Se você deseja corrigir a mount(2)chamada da biblioteca, isso é um esforço e provavelmente difícil e provavelmente não aconselhável, pois isso pode causar problemas no processamento de sistemas internos, especialmente durante a inicialização e o desligamento.

Mesmo com um programa de wrapper, você provavelmente teria que testá-lo minuciosamente para evitar interferência do sistema e fazer os ajustes apropriados.


Um conselho muito ruim e um horror de manutenção se vários programas o fizessem. Não comece assim.
Lothar

0

Provavelmente, você pode usar o gancho do kernel inotify , embora um evento de pré-desmontagem possa ser muito difícil de capturar, pois não tenho certeza se há um evento de inotify enviado antes da desmontagem do diretório.


2
O inotify informará que um diretório foi criado (por exemplo, sob /mediaou /mnt), mas não se um sistema de arquivos tiver sido montado nesse diretório.
Craig McQueen

0

A solução mais simples que provavelmente funcionará para sempre é pesquisar o /etc/mtabor /proc/mounts. Depois que uma alteração nesse arquivo é feita, significa que algo foi montado ou desmontado. Então você tem que verificar lá o dispositivo que deseja.

O Udev não é a melhor solução, pois apenas informa se um dispositivo está conectado. Não diz se o dispositivo foi montado ou não. Às vezes, isso pode funcionar, mas é uma solução hacky que, em algum momento, irá quebrar e você estará arrancando os cabelos.


"hacky" geralmente é bom o suficiente para a maioria das situações. O mundo real é administrado por soluções "hacky". Se você não sabe disso, não tem experiência no mundo real usando sistemas de computador. Por favor, salve suas opiniões para si mesmo e se atenha aos fatos. Obrigado.
Natxo asenjo

11
@natxoasenjo é por isso que existem bons desenvolvedores e desenvolvedores ruins.
Pithikos

volte quando tiver alguma experiência no mundo real. O que você propõe é escrever algum script / programa para pesquisar arquivos e você acha que é uma idéia melhor do que usar uma API bem testada como udev. Quem é o mau desenvolvedor? ;-) #
natxo asenjo

e, a propósito, escrever regras do udev não faz de você um desenvolvedor, no máximo um administrador de sistema do seu computador.
Natxo asenjo

11
@natxoasenjo bem, se você não vê que os programas do "mundo real" quebram o tempo todo devido a soluções hackeadas, então você é cego ou não tem "experiência do mundo real". O Udev funciona bem, mas não tem nada a ver com montagem e desmontagem. E por favor, pare de transformar isso em um tópico do fórum sobre quem é um programador. Não ajuda ninguém.
Pithikos

0

você pode escrever uma regra do udev para fazer isso. Eu tenho algo usado como este para fazer backup automaticamente coisas para uma unidade USB. Coisas divertidas.


11
O udev parece não ter um evento para montar / desmontar. É acionado exatamente quando você conecta / desconecta um dispositivo. E seu link não funciona ..
Pithikos

isso foi respondido há 4 anos. Eu não sou responsável por esse site. Mas você pode dar uma olhada no archive.org ..., sim, ele ainda está lá, achando que será deixado como um exercício para o leitor. Quanto ao seu comentário sobre o udev, o udev permite escrever regras e executar ações quando essas forem correspondidas. É tudo que você precisa.
Natxo asenjo

2
o objetivo é ajudar outras pessoas a tropeçar no assunto, não se trata de pontos ou outros impulsos do ego. Agora, mesmo que um usuário passe por todo esse problema, a solução está desatualizada. Então você está desperdiçando o tempo das pessoas sem nenhum benefício (exceto os 1-2 votos que você possui).
Pithikos

2
@natxoasenjo os outros usuários estão corretos, e é exatamente por isso que incentivamos as respostas a citar ou parafrasear informações suficientes dos recursos vinculados para que a resposta seja independente se os links morrerem. Uma boa resposta aqui realmente mostraria um exemplo de como criar uma regra do udev para executar um script antes / depois da montagem / desmontagem.
Nhinkle 29/07

11
@natxoasenjo Eu visitei a postagem porque seu comentário foi sinalizado por um usuário não relacionado como sendo rude ou indelicado. O Stack Exchange tem certas expectativas de respostas, uma das quais é que elas devem conter mais de um link para uma fonte externa. Sua resposta não atende a esse requisito. Você tem uma opinião do que é "perfeitamente correto" que não corresponde às expectativas do Stack Exchange para uma boa resposta. Reserve um tempo para ler Como responder .
Nhinkle
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.