Ich kenne keine Möglichkeit, dies zu tun, ohne eine Art Systemstatistik abzufragen, wie die anderen Antworten einen Bildschirmschoner oder einen Bash-Leerlauf-Timer verwenden oder von .bash_logout aus ausgeführt werden, aber hier ist eine Idee, die CPU-Auslastung zu überprüfen.
Dies würde immer noch ein Abfragen alle n Sekunden beinhalten. Wenn Ihre CPU-Auslastung unter dem von Ihnen gewählten Wert liegt, können Sie Skripte erstellen, die Sie ausführen möchten. Was auch immer Sie ausführen, kann die CPU-Auslastung erhöhen, aber Sie können Ihre "Sachen" auch gut nutzen, um sie nicht zu zählen.
Hier ist ein Testskript mit top, aber Sie könnten stattdessen mpstat verwenden oder stattdessen die Durchschnittswerte für das Laden überprüfen?
while true
do
idle=$(top -bn2 | grep "Cpu(s)"|tail -n 1|sed "s/.*, *\([0-9.]*\)%* id.*/\1/")
echo "idle is $idle"
if [[ $idle > 90 ]]
then
echo "idle above 90%"
echo "Do stuff now"
else
echo "idle below 90%"
echo "Stop doing stuff now"
fi
sleep 1
done
Das ist nur ein Skript, das ich zusammengestellt habe, um zu testen, ob ich den Leerlauf von oben gelesen habe. Sie könnten analysieren, /proc/stataber ich denke, es werden nur die Gesamtzeiten angezeigt, und Sie müssen die Ergebnisse über einen Zeitraum vergleichen. Top hat für mich ein eigenes problem (linux mint 16), auf den ersten blick scheint es cpustats nie zu ändern, als ob es warten müsste, um / proc / stat selbst zu parsen, daher sollte das top -bn2aber theoretisch top -bn1funktionieren.