Este es mi intento de crear una secuencia de comandos que use un "movimiento del mouse" para evitar que la pantalla quede en blanco mientras veo videos. Espero usar el valor para el proceso de% de CPU más alto top
y si el uso de la CPU excede el 5%, debería ocurrir un movimiento del mouse.
#!/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
Lamentablemente, no funciona. Los errores son así:
[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 ")
¿Cómo puedo solucionar esto? (Tenga en cuenta que no tengo experiencia en secuencias de comandos).
Basado en las respuestas aquí, puse juntas:
#!/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
Luego, informé sobre este código en los foros de Ubuntu y Vaphell trabajó más en él. A continuación se muestra la versión de Vaphell y es lo que estoy 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 enteros, no coma flotante. Y no estoy seguro de por qué estás usando((
...))
en lugar de sólo[
...]
. o por qué está utilizando CPU% como desencadenante ... o incluso por qué está extrayendo la utilización de CPU% de un programa de maldiciones como top en lugar de algo comops -heo %C --sort -%cpu | head -1
xset
como lo sugiere Raphael a continuación.Respuestas:
Tiene un par de problemas, primero, necesitará 2 iteraciones de
top
cada vez, vea mi respuesta aquí y el informe de error aquí .El otro problema es que bash no hace punto flotante, por lo que si el uso de su CPU es algo así
6.2
,.2
se romperá el script. Bash simplemente no está diseñado para operaciones aritméticas "complejas". Una forma de evitar esto sería mover el>5
cheque dentro de suawk
comando:fuente
Puedes usar
para evitar que la pantalla se ponga negra.
Para habilitar esto nuevamente use
Por lo tanto,
-dpms
desactiva las funciones de ahorro de energía, que pueden apagar todo el monitor ys off
desactivar la función de protector de pantalla del servidor X.Esto no funciona con el
xscreensaver
, que se mencionó en los comentarios.fuente
xscreensaver
? ¿Funcionará con cualquier protector de pantalla? ¿Incluso a los de DEgnome-screensaver
?xdotool mousemove 0 100
.Primero, necesitas instalar xdotool & rand. Ejemplo en Ubuntu:
Luego ejecute este one-liner en una terminal (como usuario):
fuente