.png)
나는 특정 파일이 비어 있는지 여부를 1분마다 확인하고 비어 있지 않은 경우 랩탑의 LED를 0.5Hz로 깜박이게 하는 간단한 .sh 스크립트를 만들었습니다. 내 에서 이 스크립트를 호출합니다 .bash_profile
.
TTY에 있을 때마다 문제 없이 작동합니다. 즉, 파일이 비어 있지 않으면 랩피의 LED가 정확한 빈도로 깜박입니다.
그러나 X를 실행하면( startx
도움이 될 수 있으면 호출되는 Xmonad/urxvt를 사용합니다) 이상한 일이 발생합니다. 깜박임 빈도가 불규칙하고 이로 인해 컴퓨터 속도가 약간 느려지고 전화할 때 top
다양한 sudo 프로세스(LED를 켜거나 끄기 위해 호출하는 프로세스)가 표시됩니다.
마치 스크립트를 서너번 호출한 것과 같은 동작입니다.
문제를 진단하는 방법을 모르겠습니다. 설명서에는 .bash_profile
(로그인 시) 한 번만 읽힌다고 나와 있습니다. 저를 도와주실 수 있나요?
# 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
답변1
.bash_profile
작성한 "로그인 시간"이 아닌 Bash가 로그인 쉘로 시작될 때 실행됩니다. 이는 Bash가 "--login"
option 또는 as 로 시작할 때마다 "-bash"
읽고 실행한다는 의미입니다 .bash_profile
. X 세션을 시작하면 암시적으로 여러 Bash 인스턴스가 시작될 가능성이 높습니다(Linux의 기본 셸이므로). 이러한 인스턴스 중 일부는 로그인 셸일 수 있으며 스크립트가 여러 번 호출되어 LED가 디스코 모드로 전환됩니다.
문제에 대한 해결책은 스크립트를 외부로 이동 하고 해당 작업을 .bash_profile
생성하거나 다음을 사용하여 다시 작성하는 것입니다.cron
inotify 도구.