Это моя попытка создать скрипт, который будет использовать «движение мышью», чтобы предотвратить гашение экрана при просмотре видео. Я надеюсь использовать значение для максимального процесса CPU%, top
и если загрузка процессора превышает 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
Затем я сообщил об этом коде на форумах Ubuntu, и 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
Рафаэля ниже.
-gt
ожидает целочисленные операнды, а не числа с плавающей запятой. и я не уверен , почему вы используете((
...))
а не просто[
...]
. или почему вы используете CPU% в качестве триггера ... или даже почему вы извлекаете загрузку CPU% из программы curses типа top, а не чего-то вродеps -heo %C --sort -%cpu | head -1