Я не знаю, як це зробити, не опитуючи якусь статистику системи, як інші відповіді використовують заставку або таймер bash idle або працює з .bash_logout, але ось ідея перевірити використання процесора.
Це все ще передбачає опитування кожні n секунд, і якщо використання вашого процесора буде менше, ніж ви вибрали, ви можете сценаріювати все, що хочете запустити. Однак, що б ви не працювали, це може підвищити використання процесора, але ви можете використовувати приємно на своїх "речах", щоб не рахувати.
Ось тестовий скрипт, що використовує top, але ви можете використовувати mpstat замість цього, або перевірити середнє завантаження?
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
Це просто сценарій, який я зібрав разом, щоб перевірити читання простою зверху. Ви можете проаналізувати, /proc/stat
але я думаю, що він показує лише загальний час, і вам потрібно буде порівнювати результати за інтервал. Вгорі є своя проблема для мене (Linux mint 16), на першому запуску, здається, ніколи не змінювати cpustats, як ніби йому доводиться чекати, щоб розібрати / proc / stat сам, отже, top -bn2
але теоретично це top -bn1
має працювати.