Regras UDEV Interferir

2

Estou trabalhando no Raspian OS (Linux) para o Raspberry Pi 3. Estou tentando fazer uma tarefa simples: quando conecto qualquer USB à porta, ele deve copiar os dados de um local específico para o USB e limpar o arquivo nesse local, aqui está meu script (testscript.sh),

#gpio 1 and 0 are for led on/off while copying 
gpio -g mode 17 out
gpio -g write 17 1
sleep 10
sudo cp -f /home/pi/NewLog.log /media/usb/NewLog-$(date -u'+%Y%m%d%H%M').log
if [ $? -eq 0 ]; then
   echo -n > /home/pi/NewLog.log
fi
gpio -g write 17 0
echo "content copied to USB"

Eu criei uma regra UDEV em /etc/udev/rules.d

KERNEL == "sd *", SUBSYSTEMS == "usb", ACTION == "adicionar", RUN +="/ home / pi / testscript.sh"

Eu também instalei o usbmount, para que as montagens USB na pasta / media / usb Eu também encontrei usbmount.rules em /lib/udev/rules.d

Agora, toda vez que eu conecto o USB, ele copia um arquivo vazio para o USB e, depois de desconectar o USB, o arquivo copiado está em location / media / usb ...

Eu estou supondo que a regra em /etc/udev/rules.d/myrule seja executada antes do /lib/udev/rules.d/usbmount, talvez por isso copie os dados para / media / usb antes do meu USB montagens! Qualquer ajuda será muito apreciada

    
por RajuBhai 13.07.2016 / 17:05

1 resposta

0

Provavelmente, você pode verificar se o diretório é um ponto de montagem (conforme esta resposta) antes de copiar qualquer coisa. Eu colocaria o cheque em um loop while infinito, mas não acho que isso seja muito ortodoxo, já que ele poderia ser interrompido.

    
por 13.07.2016 / 22:56