이것은 "마우스 이동"을 사용하여 비디오를 시청하는 동안 화면 비우기를 방지하는 스크립트를 만들려는 시도입니다. 최고 CPU % 프로세스 값을 사용하고 싶습니다. top
CPU 사용량이 5 %를 초과하면 마우스 이동이 발생합니다.
#!/usr/bin/env bash
sleep_period=60s
while true; do
if (( $(top -bn 1 | sed -nrs '8p' | awk '{ print $9 }') -gt 5 )); then
while (( $(top -bn 1 | sed -nrs '8p' | awk '{ print $9 }') -gt 5 )); do
xdotool mousemove 0 100
xdotool mousemove 0 50
sleep ${sleep_period}
done
else
sleep ${sleep_period}
fi
done
불행히도 작동하지 않습니다. 오류는 다음과 같습니다.
[07:20 PM] /bin $ noo.sh
/home/vasa1/bin/noo.sh: line 6: ((: 0.0 -gt 5 : syntax error: invalid arithmetic operator (error token is ".0 -gt 5 ")
/home/vasa1/bin/noo.sh: line 6: ((: 6.4 -gt 5 : syntax error: invalid arithmetic operator (error token is ".4 -gt 5 ")
이 문제를 어떻게 해결합니까? (스크립팅 경험이 없다는 점에 유의하십시오.)
여기에 대한 답변을 바탕으로 다음을 정리했습니다.
#!/usr/bin/env bash
sleep_period=5m
while true; do
if [[ $(top -bn 1 | sed -nrs '8p' | awk '{ print int($9) }') -gt 8 ]]; then
while [[ $(top -bn 1 | sed -nrs '8p' | awk '{ print int($9) }') -gt 8 ]]; do
xset -dpms; xset s off
xset +dpms; xset s on
sleep ${sleep_period}
done
else
sleep ${sleep_period}
fi
done
그런 다음 우분투 포럼 에서이 코드를보고하고 Vaphell 은 더 노력했습니다. 아래는 Vaphell의 버전이며 사용중인 것입니다.
#!/usr/bin/env bash
sleep_period=5m
while true; do
if top -bn 1 | awk 'NR==8 { exit !($9>8); }'; then
xset -dpms; xset s off
xset +dpms; xset s on
fi
sleep ${sleep_period}
done
xset
아래 Raphael이 제안한대로 사용 했습니다.
-gt
부동 소수점이 아닌 정수 피연산자가 필요합니다. 당신이 사용하고 왜 나는 확실하지 않다((
...))
오히려 단지보다[
...]
. 또는 왜 CPU %를 트리거로 사용하는지 또는 심지어 왜 당신이 다음과 같은 것이 아니라 top과 같은 curses 프로그램에서 CPU % 이용률을 추출하고 있는지ps -heo %C --sort -%cpu | head -1