Precisa pressionar enter para obter o prompt depois de executar o script do udev

4

Configurei uma regra simples udev para o meu Raspberry Pi (Debian) para montar automaticamente um HDD USB. Ele apenas executa um script que monta todos os dispositivos em /etc/fstab , já que é o único que eu tenho e vou ter lá. Eu só preciso disso, mas vi que havia algumas variáveis de ambiente que foram passadas para o script e tentaram fazer com que ele imprimisse o rótulo da unidade e o nome do nó do dispositivo, por exemplo, apenas para experimentar um pouco.

Consegui que funcionasse, mas agora, quando o conecto, obtenho, por exemplo:

pi@Gawain ~ $ Disk TOSHIBA_EXT (/dev/sda1) plugged in.Mounting...

E então na próxima linha eu não recebo nenhum prompt, mas não é que o script não tenha saído corretamente ou nada, está esperando por entrada e se eu digitar algo como " pwd " por exemplo funciona, é só que não mostra nenhum prompt.

Eu realmente não estou preocupado com isso, já que é apenas uma pequena coisa cosmética, e eu provavelmente vou deixar o roteiro apenas para montar a unidade silenciosamente, mas eu me sinto curioso sobre por que ele está se comportando dessa maneira.

Regra do

udev: KERNEL=="sd*1", ACTION=="add", RUN+="/home/pi/scripts/mountUSB.sh"

mountUSB.sh:

#!/bin/bash
CONSOLE="/dev/$(who | awk '{print $2}')"
echo "Disk $ID_FS_LABEL ($DEVNAME) plugged in.Mounting..." > $CONSOLE
sudo mount -a
    
por user2859982 30.03.2015 / 19:30

1 resposta

4

Quando você está imprimindo diretamente no terminal, o seu shell não o conhece, portanto não sabe imprimir o prompt novamente. Você teria um comportamento semelhante em execução, por ex. (sleep 1; echo foo) & .

Eu sugeriria não imprimir da regra do udev (que parece ser a coisa mais comum a ser feita: ficar quieto a menos que algo de errado aconteça), ou conviver com ele, sabendo que nada está realmente quebrado aqui; as mensagens enviadas diretamente para o seu terminal são parasitas no que diz respeito ao shell.

    
por 30.03.2015 / 19:38