Esta é minha tentativa de criar um script que use um "movimento do mouse" para evitar que a tela fique em branco enquanto assisto a vídeos. Espero usar o valor para o maior processo de% de CPU top
e, se o uso da CPU exceder 5%, um movimento do mouse deve ocorrer.
#!/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
Infelizmente isso não funciona. Os erros são assim:
[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 ")
Como faço para corrigir isso? (Observe que não tenho experiência em scripts.)
Com base nas respostas aqui, reuni:
#!/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
Então, relatei esse código nos Fóruns do Ubuntu e o Vaphell trabalhou mais nele. Abaixo está a versão do Vaphell e é o que estou usando:
#!/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
como sugerido por Raphael abaixo.
-gt
espera operandos inteiros, não ponto flutuante. e eu não sei por que você está usando((
...))
em vez de apenas[
...]
. ou porque você está usando CPU% como o gatilho ... ou até mesmo por que você está extraindo a utilização da CPU% a partir de um programa de maldições como top em vez de algo comops -heo %C --sort -%cpu | head -1