Я не знаю способа сделать это без опроса какой-либо статистики системы, например, в других ответах используется заставка или таймер простоя bash или запуск из .bash_logout, но вот идея проверить загрузку процессора.
Это по-прежнему будет включать опрос каждые n секунд, и если загрузка вашего ЦП будет ниже любой выбранной вами величины, вы можете написать сценарий для любого запуска. Тем не менее, все, что вы запускаете, может увеличить нагрузку на процессор, но вы можете использовать nice на своих «вещах», чтобы не считать их.
Вот тестовый скрипт с использованием 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
должно сработать.