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.

Jörg Haubrichs
fonte
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.

mdpc
fonte
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.

d34dh0r53
fonte
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.

Pithikos
fonte
"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.

natxo asenjo
fonte
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