Tôi không biết cách nào để thực hiện việc này mà không bỏ phiếu một số loại thống kê hệ thống, như các câu trả lời khác sử dụng bộ bảo vệ màn hình hoặc bộ đếm thời gian nhàn rỗi hoặc chạy từ .bash_logout, nhưng đây là một ý tưởng để kiểm tra mức độ sử dụng CPU.
Điều này vẫn sẽ liên quan đến việc bỏ phiếu cứ sau n giây và nếu mức sử dụng CPU của bạn dưới bất kỳ số tiền nào bạn chọn thì bạn có thể viết kịch bản bất cứ điều gì bạn muốn chạy. Tuy nhiên, bất cứ điều gì bạn chạy đều có thể tăng mức sử dụng CPU, nhưng bạn có thể sử dụng tốt "công cụ" của mình để không tính nó.
Đây là tập lệnh thử nghiệm bằng cách sử dụng hàng đầu, nhưng thay vào đó bạn có thể sử dụng mpstat hoặc kiểm tra mức trung bình tải?
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
Đó chỉ là một kịch bản tôi đã tập hợp lại để kiểm tra việc đọc nhàn rỗi từ đầu. Bạn có thể phân tích cú pháp /proc/stat
nhưng tôi nghĩ rằng nó chỉ hiển thị tổng số lần và bạn cần so sánh kết quả trong một khoảng thời gian. Top có vấn đề riêng đối với tôi (linux mint 16), trong lần chạy đầu tiên, nó dường như không bao giờ thay đổi cpustats, như thể nó phải chờ để phân tích / Proc / stat, do đó, top -bn2
trên lý thuyết top -bn1
nên hoạt động.