![El script actúa de manera extraña en bash_profile (pero justo debajo de X)](https://rvso.com/image/1366226/El%20script%20act%C3%BAa%20de%20manera%20extra%C3%B1a%20en%20bash_profile%20(pero%20justo%20debajo%20de%20X).png)
He creado un script .sh simple que verifica cada minuto si un archivo en particular está vacío o no, y si no está vacío, hace que un LED de mi computadora portátil parpadee a 0,5 Hz. Llamo a este script desde mi .bash_profile
.
Siempre que estoy en TTY, la cosa funciona perfectamente (para decir: cuando el archivo no está vacío, el LED de mi portátil parpadea con esa frecuencia precisa).
Pero cuando ejecuto X (uso Xmonad/urxvt, invocado a través de startx
si eso pudiera ayudar) sucede algo extraño. La frecuencia del parpadeo es errática, ralentiza (un poco) la máquina y cuando llamo top
veo varios procesos sudo (el que llamo para encender o apagar el led).
Es el mismo comportamiento que si llamara al guión tres o cuatro veces.
No sé cómo diagnosticar el problema. El manual dice .bash_profile
que se lee una vez (al momento de iniciar sesión). ¿Me puede ayudar?
# 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
Respuesta1
.bash_profile
se ejecuta cuando Bash se inicia como un shell de inicio de sesión, no "en el momento de iniciar sesión" como escribió. Esto significa que cada vez que Bash comience con "--login"
opción o como "-bash"
, leerá y ejecutará .bash_profile
. Lo más probable es que al iniciar su sesión X se inicien implícitamente varias instancias de Bash (ya que es un shell predeterminado en Linux). Algunas de estas instancias probablemente sean shells de inicio de sesión, su script se llama varias veces, lo que hace que su LED entre en modo discoteca.
La solución a su problema sería sacar el script del archivo .bash_profile
y crear un cron
trabajo para él o reescribirlo usandoherramientas-inotify.