Dies ist mein Versuch, ein Skript zu erstellen, das eine "Mausbewegung" verwendet, um ein Ausblenden des Bildschirms beim Ansehen von Videos zu verhindern. Ich hoffe, den Wert für den höchsten CPU% -Prozess in verwenden zu können. top
Wenn die CPU-Auslastung 5% überschreitet, sollte eine Mausbewegung erfolgen.
#!/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
Geht leider nicht. Die Fehler sind wie folgt:
[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 ")
Wie behebe ich das? (Bitte beachten Sie, dass ich keine Erfahrung mit Skripten habe.)
Basierend auf den Antworten hier habe ich zusammengestellt:
#!/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
Dann habe ich diesen Code in den Ubuntu-Foren gemeldet und Vaphell hat weiter daran gearbeitet. Unten ist Vaphells Version und ich verwende sie:
#!/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
erwartet ganzzahligen Operanden, nicht Gleitkomma-. und ich bin mir nicht sicher, warum du((
...))
und nicht nur[
... verwendest]
. oder warum du CPU% als Auslöser verwendest ... oder sogar warum du CPU% Auslastung aus einem Fluchprogramm wie top extrahierst und nicht so etwas wieps -heo %C --sort -%cpu | head -1
xset
wie von Raphael unten vorgeschlagen.Antworten:
Sie haben ein paar Probleme. Zuerst benötigen Sie jeweils 2 Iterationen.
top
Meine Antwort finden Sie hier und den Fehlerbericht hier .Das andere Problem ist, dass bash kein Gleitkomma ausführt. Wenn Ihre CPU-Auslastung also so etwas wie ist
6.2
,.2
wird das Skript beschädigt. Bash ist einfach nicht für 'komplexe' arithmetische Operationen ausgelegt. Eine Möglichkeit, dies zu umgehen, besteht darin, den>5
Scheck in Ihremawk
Befehl zu verschieben:quelle
Sie können verwenden
um zu verhindern, dass der Bildschirm schwarz wird.
Um dies wieder zu aktivieren, verwenden Sie
So
-dpms
deaktiviert die die Stromenergiesparfunktionen, die den ganzen Monitor und ausschalten könnens off
schalten die Bildschirmschoner - Funktion des X - Servers.Dies funktioniert nicht mit dem
xscreensaver
, was in den Kommentaren erwähnt wurde.quelle
xscreensaver
? Funktioniert es mit jedem Bildschirmschoner? Sogar DE mögengnome-screensaver
?xdotool mousemove 0 100
.Zuerst müssen Sie xdotool & rand installieren. Beispiel unter Ubuntu:
Führen Sie dann diesen Einzeiler in einem Terminal aus (als Benutzer):
quelle