GNU/Linux >> Belajar Linux >  >> Linux

Apa saja metode yang tersedia untuk mendapatkan penggunaan CPU di Linux Command line?

Seperti yang dikatakan orang lain, cara terbaik mungkin adalah top . Perlu sedikit penyesuaian dan penguraian, tetapi Anda bisa mendapatkannya untuk memberi Anda penggunaan CPU saat ini sebagai persentase.

top membagi penggunaan CPU antara pengguna, proses sistem, dan nice proses, kami ingin jumlah dari tiga. Jadi, kita bisa menjalankan top di b mode atch yang memungkinkan kita mengurai hasilnya. Namun, seperti yang dijelaskan di sini, iterasi pertama dari top -b mengembalikan persentase sejak boot, oleh karena itu kita memerlukan setidaknya dua iterasi (-n 2 ) untuk mendapatkan persentase saat ini. Untuk mempercepat, Anda dapat menyetel d elay antara iterasi ke 0.01 . Terakhir, Anda grep baris yang berisi persentase CPU dan kemudian gunakan gawk untuk 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 melalui ps -o pcpu ax dengan menambahkan %use dari setiap proses yang berjalan. Sayangnya, seperti yang dijelaskan di sini, ps "mengembalikan persentase waktu yang dihabiskan untuk menjalankan seluruh masa proses" yang bukan itu yang Anda butuhkan.

EDIT

Berdasarkan komentar Anda, versi top Anda berbeda dengan milik 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 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}'

sar adalah cara pasti untuk melakukannya. Jadi misalnya sar -u akan menampilkan sesuatu seperti ini:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

Anda tidak menyebutkan Linux mana yang Anda gunakan tetapi untuk CentOS/RedHat Anda perlu menginstal sysstat paket, dan saya pikir itu sama di Debian/Ubuntu.

Anda juga dapat menggunakan sar untuk mengumpulkan statistik ad hoc :

sar -o /tmp/sar.out 60 600

Akan mengumpulkan statistik setiap 60 detik sebanyak 600 kali, jadi 600 menit.


Linux
  1. Hasilkan kata sandi di baris perintah Linux

  2. 8 tips untuk baris perintah Linux

  3. Alat Baris Perintah Apa yang Tersedia Untuk Menguji Layanan Web??

  1. Miliki sapi di baris perintah Linux

  2. Bagaimana cara mendapatkan jumlah bingkai dalam video di baris perintah linux?

  3. Linux top command:Apa kita, sy, ni, id, wa, hi, si dan st (untuk penggunaan CPU)?

  1. Diurutkan dengan sort di baris perintah

  2. Masukkan diri Anda ke dalam baris perintah Linux

  3. Selesaikan lebih banyak di baris perintah Linux dengan GNU Parallel