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
-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
xset
como sugerido por Raphael abaixo.Respostas:
Você tem alguns problemas: primeiro, você precisará de 2 iterações de
top
cada vez, veja minha resposta aqui e o relatório de erros aqui .O outro problema é que o bash não faz ponto flutuante; portanto, se o uso da CPU for algo parecido
6.2
,.2
o script será interrompido. O Bash simplesmente não foi projetado para operações aritméticas "complexas". Uma maneira de contornar isso seria mover a>5
verificação dentro do seuawk
comando:fonte
Você pode usar
para impedir que a tela fique preta.
Para habilitar isso novamente, use
Portanto,
-dpms
desativa os recursos de economia de energia, que podem desligar o monitor inteiro es off
o recurso de proteção de tela do servidor X.Isso não funciona com o
xscreensaver
, mencionado nos comentários.fonte
xscreensaver
? Funcionará com algum protetor de tela? Mesmo os de DE gostamgnome-screensaver
?xdotool mousemove 0 100
.Primeiro, você precisa instalar o xdotool & rand. Exemplo no Ubuntu:
Em seguida, execute este one-liner em um terminal (como usuário):
fonte