Script agindo de forma estranha no bash_profile (mas logo abaixo do X)

Script agindo de forma estranha no bash_profile (mas logo abaixo do X)

Eu criei um script .sh simples que verifica a cada minuto se um determinado arquivo está vazio ou não e, se não estiver vazio, faz um led do meu laptop piscar a 0,5 Hz. Eu chamo esse script do meu arquivo .bash_profile.

Sempre que estou em TTY, a coisa funciona perfeitamente (para dizer: quando o arquivo não está vazio o led do meu lappy pisca naquela frequência precisa).

Mas quando executo o X (eu uso Xmonad/urxvt, invocado via startxif that could help) algo estranho acontece. A frequência do piscar é errática, desacelera (um pouco) a máquina e quando ligo topvejo vários processos sudo (aquele que chamo para ligar ou desligar o led).

É o mesmo comportamento como se eu chamasse o script três ou quatro vezes.

Não sei como diagnosticar o problema. O manual diz .bash_profileque é lido uma vez (no momento do login). Você pode me ajudar?

# blink mail led

blinkTime="0.2"
checkTime="60"


while true; do
  hasIt=$(cat ~/someFolder/hazText.txt) # 1: has text

  if [ $hasIt -eq "1" ]
  then
    echo "1" | sudo tee /sys/class/leds/led:alarm/brightness > /dev/null
    sleep $blinkTime
    echo "0" | sudo tee /sys/class/leds/led:alarm/brightness > /dev/null
    sleep $blinkTime
  else
    sleep $checkTime
  fi

done

Responder1

.bash_profileé executado quando o Bash inicia como um shell de login, não "no momento do login", como você escreveu. Isso significa que toda vez que o Bash iniciar com "--login"option ou as "-bash", ele irá ler e executar .bash_profile. Provavelmente, iniciar sua sessão X inicia implicitamente várias instâncias do Bash (já que é um shell padrão no Linux). Algumas dessas instâncias provavelmente são shells de login, seu script é chamado várias vezes, o que faz com que seu LED entre no modo disco.

A solução para o seu problema seria mover o script para fora do arquivo .bash_profilee criar um crontrabalho para ele ou reescrevê-lo usandoferramentas inotify.

informação relacionada