![Script agindo de forma estranha no bash_profile (mas logo abaixo do X)](https://rvso.com/image/1366226/Script%20agindo%20de%20forma%20estranha%20no%20bash_profile%20(mas%20logo%20abaixo%20do%20X).png)
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 startx
if that could help) algo estranho acontece. A frequência do piscar é errática, desacelera (um pouco) a máquina e quando ligo top
vejo 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_profile
que é 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_profile
e criar um cron
trabalho para ele ou reescrevê-lo usandoferramentas inotify.