Như những người khác đã nói, cách tốt nhất có lẽ là top
. Nó cần một chút tinh chỉnh và một chút phân tích cú pháp nhưng bạn có thể lấy nó để cung cấp cho bạn mức sử dụng CPU hiện tại dưới dạng phần trăm.
top
phân chia việc sử dụng CPU giữa người dùng, quy trình hệ thống và nice
quy trình, chúng tôi muốn tổng của ba. Vì vậy, chúng ta có thể chạy top
trong b
chế độ atch cho phép chúng ta phân tích đầu ra của nó. Tuy nhiên, như đã giải thích ở đây , lần lặp đầu tiên top -b
trả về tỷ lệ phần trăm kể từ khi khởi động, do đó chúng ta cần ít nhất hai lần lặp ( -n 2
) để có được tỷ lệ phần trăm hiện tại. Để tăng tốc mọi thứ, bạn có thể đặt d
elay giữa các lần lặp thành 0.01
. Cuối cùng, bạn có grep
dòng chứa tỷ lệ phần trăm CPU và sau đó sử dụng gawk
để tính tổng các quy trình của người dùng, hệ thống và tốt đẹp:
top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
----- ------ ----------- --------- ----------------------
| | | | |------> add the values
| | | |--> keep only the 2nd iteration
| | |----------------> keep only the CPU use lines
| |----------------------------> set the delay between runs
|-----------------------------------> run twice in batch mode
Tôi nghĩ bạn cũng có thể có được thông tin này thông qua ps -o pcpu ax
việc thêm% sử dụng của mỗi quy trình đang chạy. Thật không may, như được giải thích ở đây , ps
"trả về phần trăm thời gian chạy trong toàn bộ thời gian của một quá trình" không phải là thứ bạn cần.
BIÊN TẬP
Dựa trên nhận xét của bạn, phiên bản của bạn top
khác với tôi và bạn nên sử dụng phiên bản này thay thế:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Và, để tránh các vấn đề với nội địa hóa, hãy đặt ngôn ngữ thành C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'