Não conheço uma maneira de fazer isso sem pesquisar algum tipo de estatística do sistema, como as outras respostas que usam um protetor de tela ou um cronômetro inativo, ou executando a partir de .bash_logout, mas aqui está uma idéia para verificar o uso da CPU.
Isso ainda envolveria sondagens a cada n segundos, e se o uso da CPU estiver abaixo da quantidade que você escolher, poderá criar o script do que deseja executar. No entanto, o que quer que você execute pode aumentar o uso da CPU, mas você pode usar bem suas "coisas" para não contar.
Aqui está um script de teste usando top, mas você pode usar o mpstat ou verificar as médias de carga?
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
Esse é apenas um script que eu montei para testar a leitura da ociosidade de cima. Você pode analisar, /proc/statmas acho que mostra apenas o tempo total e é necessário comparar os resultados ao longo de um intervalo. O Top tem seu próprio problema para mim (linux mint 16); na primeira execução, ele parece nunca mudar o cpustats, como se tivesse que esperar para analisar / proc / stat em si, portanto, top -bn2mas na teoria top -bn1deveria funcionar.