Seperti yang orang lain katakan, cara terbaik mungkin top. Perlu sedikit penyesuaian dan sedikit penguraian tetapi Anda bisa mendapatkannya untuk memberi Anda penggunaan CPU saat ini sebagai persentase.
topmembagi penggunaan CPU antara pengguna, proses sistem dan niceproses, kami ingin jumlah dari ketiganya. Jadi, kita dapat menjalankan topdalam bmode atch yang memungkinkan kita untuk mengurai outputnya. Namun, seperti yang dijelaskan di sini , iterasi pertama top -bmengembalikan persentase sejak booting, oleh karena itu kami membutuhkan setidaknya dua iterasi ( -n 2) untuk mendapatkan persentase saat ini. Untuk mempercepat, Anda dapat mengatur delay di antara iterasi 0.01. Akhirnya, Anda grepbaris yang berisi persentase CPU dan kemudian gunakan gawkuntuk menjumlahkan pengguna, sistem dan proses yang bagus:
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
Saya pikir Anda juga bisa mendapatkan informasi ini ps -o pcpu axdengan menambahkan% penggunaan setiap proses yang berjalan. Sayangnya, seperti yang dijelaskan di sini , ps"mengembalikan persentase waktu yang dihabiskan untuk menjalankan seluruh proses" yang bukan apa yang Anda butuhkan.
EDIT
Berdasarkan komentar Anda, versi Anda topberbeda dengan saya dan Anda harus menggunakan ini sebagai gantinya:
top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'
Dan, untuk menghindari masalah dengan pelokalan, setel lokal ke C:
LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'