Executar um comando quando um disco é inserido (Linux)

6

Eu gostaria de executar automaticamente meu próprio comando sempre que uma unidade é inserida no Linux (incluindo unidades USB, por exemplo). Obviamente, a solução mais simples seria pesquisar regularmente e verificar se há alterações em / proc / partitions ou em / dev / disk, mas eu esperava algo um pouco mais elegante do que isso.

EDITAR

Eu sei que isso é possível, porque o GNOME faz isso mesmo; sempre que uma nova unidade é inserida, o GNOME executa seu próprio mecanismo de "reprodução automática" para executar alguma ação. (" Gostaria de ver as imagens neste cartão SD? ")

Eu posso criar dois usos para isso: o primeiro é em um cluster do Amazon EC2 que eu gerencio, para detectar e inicializar volumes de armazenamento EBS recém-anexados automaticamente.

O outro uso está em um dispositivo de servidor de arquivos doméstico baseado em Linux; quando insiro um cartão SD no dispositivo, ele deve montar o cartão, mover as fotos do cartão para o disco rígido interno, desmontar o cartão e, em seguida, emitir um sinal sonoro para que eu saiba que está pronto.

    
por tylerl 07.06.2009 / 04:31

3 respostas

12

As regras do Udev são o que você está procurando. A partir da página do manual:

... If udev receives a device event, it matches its configured rules against the available device attributes provided in sysfs to identify the device. Rules that match may provide additional device information or specify a device node name and multiple symlink names and instruct udev to run additional programs as part of the device event handling. ...

Ênfase minha.

Os arquivos de regras estão em /etc/udev/rules.d/ e sua documentação está no udev (7). Ah, e eles trabalham para praticamente tudo.

    
por 07.06.2009 / 05:19
7

Encontrei um bom link aqui. link

Basicamente você pode colocar scripts em / etc / udev para todos os dispositivos de bloco ou específicos.

    
por 07.06.2009 / 05:22
0

O Autorun ( link ) cuida dos CDs, mas não acho que algo assim exista para outros meios de comunicação. Eu realmente não sou da opinião de que também deveria.

Você pode ser capaz de criar um autorun para ver o dmesg de vez em quando, mas é bom que ele funcione apenas para o seu sistema de pet.

Qual é o seu objetivo geral? Talvez exista uma maneira melhor?

    
por 07.06.2009 / 04:51

Tags