Saya tidak tahu cara untuk melakukan ini tanpa polling semacam statistik sistem, seperti jawaban lain menggunakan screensaver atau penghitung waktu bash, atau menjalankan dari .bash_logout, tapi di sini ada ide untuk memeriksa penggunaan CPU.
Ini masih akan melibatkan pemungutan suara setiap n detik, dan jika penggunaan CPU Anda di bawah jumlah apa pun yang Anda pilih maka Anda dapat skrip apa pun yang ingin Anda jalankan. Namun, apa pun yang Anda jalankan dapat meningkatkan penggunaan CPU, tetapi Anda bisa menggunakan "barang" Anda dengan baik untuk tidak menghitungnya.
Berikut ini skrip pengujian menggunakan top, tetapi Anda dapat menggunakan mpstat saja, atau periksa rata-rata pemuatan?
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
Itu hanya naskah yang saya lempar bersama untuk menguji membaca idle dari atas. Anda dapat menguraikan /proc/stat
tetapi saya pikir ini hanya menunjukkan waktu total, dan Anda harus membandingkan hasilnya dalam suatu interval. Top memiliki masalah sendiri untuk saya (linux mint 16), pada menjalankan pertama tampaknya tidak pernah mengubah cpustats, seolah-olah harus menunggu untuk menguraikan / proc / stat itu sendiri, maka top -bn2
secara teori tetapi secara teori top -bn1
harus bekerja.