Satu liner untuk menunjukkan penggunaan CPU, RAM dan HDD

15

Saya telah melihat beberapa posting yang menginginkan hal yang sama tentang penggunaan, namun jawabannya SELALU merujuk pada menginstal beberapa alat pihak ketiga.

Saya tidak ingin menginstal apa pun.

Ada satu kalimat? Berikut ini akan menjadi output yang bagus:

CPU 11% RAM 20% HDD 85%
Karl Morrison
sumber
Apakah penggunaan HDD adalah persentase seberapa penuh atau seberapa sibuknya?
Byte Commander
@ ByteCommander Keduanya? :) Pada catatan serius, kapasitasnya sekalipun. Jika kedua hal itu akan menyenangkan.
Karl Morrison
Huh .......: - /
Byte Commander
@ByteCommander Dengan kapasitas yang saya maksud "seberapa penuh" jika saya tidak jelas :)
Karl Morrison

Jawaban:

28

Anda bisa menggunakan ini

echo "CPU `LC_ALL=C top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}'`% RAM `free -m | awk '/Mem:/ { printf("%3.1f%%", $3/$2*100) }'` HDD `df -h / | awk '/\// {print $(NF-1)}'`"

Outputnya adalah

CPU 7.4% RAM 33.9% HDD 94%
MKay
sumber
2
bagian HD akan menyedot jika Anda memiliki banyak partisi.
coteyr
1
df -h /bagian dari baris perintah menunjukkan statistik tentang /partisi. Anda dapat mengulangi df -hperintah dan menggantinya /dengan titik pemasangan yang perlu Anda monitor.
MKay
1
Tidak bekerja untuk saya. CPU selalu 91%, saya tidak tahu dari mana mendapatkannya. // Dan RAM termasuk buffer dan cache sehingga terlihat seperti habis. Saya memang menggunakan 97,8% RAM, tetapi masih ada 67,5% gratis.
Oskar Skog
2
@OskarSkog Anda topbaik-baik saja. Penggunaan CPU tidak dapat diukur pada titik waktu saat ini, itu harus diukur dalam jangka waktu pendek. Saat topmenjalankan iterasi pertama, itu menunjukkan penggunaan rata-rata sejak reboot terakhir. Dimulai dengan iterasi kedua itu menunjukkan penggunaan aktual saat ini sejak iterasi sebelumnya. Dan jika Anda memiliki masalah dengan pelokalan, Anda dapat menempatkan LC_ALL=Cdi depan perintah untuk menggunakan pelokalan bahasa Inggris default (format angka dll, bukan bahasa).
Byte Commander
2
@MKay: Anda mungkin ingin menggantinya top -bn1 | grep "Cpu(s)"dengan top -bn2 | grep "Cpu(s)" | tail -n1. Yang pertama akan menampilkan rata-rata jangka panjang seperti yang ditunjukkan oleh Komandan Byte.
Oskar Skog
7

Untuk penggunaan CPU (rata-rata (user+system)/(user+system+idle)kali lebih dari 0,1 detik):

(grep 'cpu ' /proc/stat;sleep 0.1;grep 'cpu ' /proc/stat)|awk -v RS="" '{print "CPU "($13-$2+$15-$4)*100/($13-$2+$15-$4+$16-$5)"%"}'

Untuk penggunaan RAM ( (total-available)/total):

awk '/MemTotal/{t=$2}/MemAvailable/{a=$2}END{print 100-100*a/t"%"}' /proc/meminfo

Untuk penggunaan HDD (hanya volume yang dipasang sebagai /):

df | awk '/ \/$/{print "HDD "$5}'
Komandan Byte
sumber
Menarik, memori yang tersedia lebih sedikit daripada apa yang `gratis-m | head -n3 | tail -n1 melaporkan sebagai memori bebas.
Oskar Skog
@OskarSkog Bisakah Anda membagikan output dari perintah itu? Bagi saya itu hanya mencetak total Swap / bekas / baris bebas, yang tidak relevan di sini. Mungkin Anda bermaksud sesuatu yang lain, atau freeperintah Anda masih menggunakan format output lama dengan terpisah - / + buffer / cache line ...
Byte Commander
Gratis saya menggunakan format lama: oskog97.com/sshin/free-output.png Apa yang berubah?
Oskar Skog
3
@OskarSkog Baris "- / + buffer / cache" dihapus dan sekarang ada kolom tambahan "tersedia" di baris "Mem". Dari man free: " Estimasi berapa banyak memori yang tersedia untuk memulai aplikasi baru, tanpa bertukar. Tidak seperti data yang disediakan oleh cache atau bidang gratis, bidang ini memperhitungkan cache halaman akun dan juga bahwa tidak semua pelat memori yang dapat direklamasi akan direklamasi karena item sedang digunakan MemTersedia di / proc / meminfo, tersedia di kernel 3.14, ditiru di kernel 2.6.27+, jika tidak sama dengan gratis) "
Byte Commander