Pergunta

Eu sei que o Ubuntu (e Fedora) usa Upstart istead do clássico System V Init daemon (SysVinit) .

Eu gostaria de saber como detectar quando um drive USB foi inserido, montá-lo e copiar alguns arquivos para ele. Gostaria Upstart para chamar de meu roteiro para isso.

Se for possível, gostaria Upstart para chamar o script para um específica USB-drive, para que gostaria de obter funcionalidade normal para cada USB-drive, exceto o meu "backup instantâneo" USB-drive .

Se Upstart poderia enviar a string de identificação do drive USB como um argumento para o meu script eu acho que seria a solução ideal, como eu seria capaz de ter a string id no meu script e, possivelmente, poderia fazer a alça roteiro dois USB -drives sem muita mudança.

E como uma nota lateral, você sabe qualquer outro sistema, exceto Upstart que lida com USB-drives, rede de sistemas de arquivos montados e tal em um bom caminho? (Como SysVinit não parece .)

Foi útil?

Solução

upstart não parece vir com "dispositivo USB conectado" sinais fora da caixa. O foco tem sido até agora a fazer muito bonito exatamente a mesma coisa que o init, eo "arrefecer características anunciadas" são no futuro.

Desde o Fedora wiki :" ... obtendo-se Upstart no lugar agora , embora ela só vai estar funcionando como SysV faz agora, vai permitir-nos para começar uma transição suave para este modelo ".

Felizmente, você pode implementar o futuro se por ter udev executar um script para enviar seu sinal arrivista personalizado para iniciante pode chamar seu script de backup. Você também pode ter udev chamar seu script de backup diretamente.

udev já tem uma maneira simples de executar scripts quando os dispositivos estão conectados e desconectados. Consulte renomeação nome do dispositivo seu usb disco rígido com udev regras . No meu sistema, eu teria que usar udevadm monitor --env vez de udevmonitor --env do tutorial. Depois de seguir o tutorial, você criaria outra regra udev como este:

echo 'SUBSYSTEM=="block", ID_SERIAL_SHORT=="101A9041C67D182E", \
NAME="myusbdrive", \
RUN+="/my/backup/script $env{NAME}"' > /etc/udev/rules.d/S96-mydrive.rules

Substituir ID_SERIAL_SHORT com id real do seu dispositivo e $env{NAME} com qualquer ambiente udev variável (s) suas necessidades de script para encontrar o dispositivo de backup. Você pode precisar de fundo o script para evitar o bloqueio udev.

Se você quiser usar arrivista, você poderia ter sua regra udev prazo /sbin/initctl emit back-it-up VARIABLE=$env{VARIABLE} ... e, em seguida, escrever um script em /etc/event.d começando com o start on back-it-up linha.

Veja também Como Eu posso ouvir 'dispositivo usb inseridos' eventos em Linux, em Python? para obter dicas sobre como fazer o mesmo com DBus . DBus pode ser mais conveniente se você quiser ter a sessão iniciada executar um "relógio para unidade de backup" usermode daemon.

Outras dicas

No Ubuntu 9.10 e mais recentes Upstart tem alguns recursos udev através do serviço upstart-udev-bridge.

#thumbdrive_special.conf
start on block-device-added

task

script
   if [ `blkid $DEV` -eq "YOUR-THUMBDRIVES-UUID" ]; then
      /home/you/bin/thumbdrive_special $DEV
   fi
end script

Eu amo como simples e arrivista elegante pode ser. No entanto, uma solução DBus poderia ser melhor se menos elegante. Com uma solução de DBus você poderia aparecer notificações para o usuário e fornecer controle de usuário fácil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top