Je ne connais pas de moyen de le faire sans interroger une sorte de statistiques système, comme les autres réponses utilisent un économiseur d'écran ou une minuterie inactive bash, ou en cours d'exécution à partir de .bash_logout, mais voici une idée pour vérifier l'utilisation du processeur.
Cela impliquerait toujours l'interrogation toutes les n secondes, et si votre utilisation du processeur est inférieure à la quantité que vous choisissez, vous pouvez alors écrire ce que vous voulez exécuter. Cependant, tout ce que vous exécutez pourrait augmenter l'utilisation du processeur, mais vous pouvez utiliser nice sur votre "truc" pour ne pas le compter.
Voici un script de test utilisant top, mais vous pouvez utiliser mpstat à la place ou vérifier les moyennes de charge à la place?
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
C'est juste un script que j'ai jeté ensemble pour tester la lecture du ralenti par le haut. Vous pouvez analyser, /proc/stat
mais je pense que cela ne montre que les temps totaux, et vous auriez besoin de comparer les résultats sur un intervalle. Top a son propre problème pour moi (Linux Mint 16), lors de la première exécution, il ne semble jamais changer les cpustats, comme s'il devait attendre pour analyser / proc / stat lui-même, d'où le top -bn2
mais en théorie top -bn1
devrait fonctionner.