Це моя спроба зробити сценарій, який використовує "переміщення миші", щоб запобігти затуханню екрана під час перегляду відео. Я сподіваюся використати значення для найвищого відсотка процесора у процесі, 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% використання з програми прокльонів, як топ, а не щось на кшталтps -heo %C --sort -%cpu | head -1