Nie znam sposobu, aby to zrobić bez odpytywania statystyk systemu, jak inne odpowiedzi używają wygaszacza ekranu lub licznika czasu bezczynności bash lub uruchamiania z .bash_logout, ale oto pomysł, aby sprawdzić użycie procesora.
Wciąż wiązałoby się to z odpytywaniem co n sekund, a jeśli użycie procesora jest mniejsze niż wybrana ilość, możesz wykonać skrypt, co chcesz uruchomić. Jednak cokolwiek uruchomisz, może zwiększyć użycie procesora, ale możesz użyć ładnych „rzeczy”, aby go nie policzyć.
Oto skrypt testowy przy użyciu top, ale możesz zamiast tego użyć mpstat lub zamiast tego sprawdzić średnie obciążenia?
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
To tylko skrypt, który przygotowałem, aby przetestować czytanie bezczynności od góry. Możesz parsować, /proc/stat
ale myślę, że pokazuje tylko całkowity czas i trzeba porównać wyniki w danym przedziale czasowym. Top ma dla mnie swój problem (linux mint 16), przy pierwszym uruchomieniu wydaje się, że nigdy nie zmienia cpustats, tak jakby musiał czekać na parsowanie / proc / stat, dlatego top -bn2
teoretycznie top -bn1
powinno działać.