Questo è il mio tentativo di creare uno script che utilizzerà una "mossa del mouse" per impedire la cancellazione dello schermo durante la visione di video. Spero di utilizzare il valore per il processo% CPU più elevato top
e se l'utilizzo della CPU supera il 5%, dovrebbe verificarsi uno spostamento 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
Sfortunatamente, non funziona. Gli errori sono così:
[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 ")
Come posso risolvere questo problema? (Nota che non ho esperienza di scripting.)
Sulla base delle risposte qui, ho messo insieme:
#!/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
Quindi, ho segnalato questo codice ai forum di Ubuntu e Vaphell ci ha lavorato ulteriormente. Di seguito è la versione di Vaphell ed è quello che sto 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
come suggerito da Raffaello di seguito.
-gt
aspetta operandi interi, non in virgola mobile. e io non sono sicuro perché si sta utilizzando((
...))
e non solo[
...]
. o perché stai usando CPU% come trigger ... o anche perché stai estraendo l'utilizzo della CPU% da un programma maledetto come top piuttosto che qualcosa del genereps -heo %C --sort -%cpu | head -1