Saya mencoba untuk mengambil memori yang digunakan (RAM) dalam persentase menggunakan perintah Linux. Cpanel saya menampilkan Memory Used yang harus saya tampilkan pada halaman web tertentu.
Dari forum, saya menemukan bahwa memori yang benar dapat ditemukan dari yang berikut:
free -m
Hasil:
-/+ buffers/cache: 492 1555
- / + buffer / cache: berisi penggunaan memori yang benar. Saya tidak tahu bagaimana mem-parse info ini atau jika ada perintah berbeda untuk mendapatkan memori yang digunakan dalam persentase.
free | grep Mem | awk '{print $4/$2 * 100.0}'
$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}'
Jawaban:
Berikut ini contoh keluaran dari gratis:
Baris pertama dari angka (
Mem:
) berisi daftartotal
ingatanused
ingatanfree
ingatanshared
buffers
cached
)Di baris ini
used
termasuk buffer dan cache dan dampak ini gratis. Ini bukan memori "benar" bebas Anda karena sistem akan membuang cache jika diperlukan untuk memenuhi permintaan alokasi.Baris berikutnya (
-/+ buffers/cache:
) memberi kita memori yang digunakan dan kosong yang sebenarnya seolah-olah tidak ada buffer atau cache.Baris terakhir (
Swap
) memberikan penggunaan memori swap. Tidak ada buffer atau cache untuk swap karena tidak masuk akal untuk meletakkan hal-hal ini pada disk fisik.Untuk menampilkan memori yang digunakan (minus buffer dan cache) Anda dapat menggunakan perintah seperti:
Ini mengambil baris ketiga dan membagi bekas / total * 100.
Dan untuk memori bebas:
sumber
free
,-/+ buffers/cache
sepenuhnya dihilangkan dengan sengaja, dan nilai yang ditunjukkan padaused
kolom sekarang tidak termasuk buffer dan cache secara default. Lihat di sini: bugzilla.redhat.com/show_bug.cgi?id=1158828Saya akan menyebutkan tentang bagaimana mengurai informasi pada
free
perintah. Untuk menemukan persentase, Anda dapat menggunakan seperti yang disarankan dalam 2 jawaban lainnya.Ini dijelaskan dengan jelas di sini . Saya akan mencoba menjelaskan dari apa yang saya miliki di sistem saya.
Sekarang, mari kita lihat apa yang sebenarnya mewakili berbagai angka.
Line1
Line2
Bagaimana cara menghitung nilai 696 dan 7173 yang diperoleh di Line2?
Total digunakan ( 4402 ) - Total buffer RAM ( 208 ) - Total RAM untuk caching ( 3497 ) harus merupakan RAM yang digunakan aktual dalam sistem. Ini mengembalikan saya 697 yang merupakan output RAM yang digunakan sebenarnya di baris kedua.
Sekarang, Total Available ( 7869 ) - Actual Used ( 696 ) seharusnya memberi Anda memori bebas yaitu 7173 dalam hal ini yang juga didapat sebagai output di baris kedua.
sumber
Meskipun duplikat seperti yang ditunjukkan oleh @szboardstretcher, preferensi saya dari solusi (dalam pertanyaan asli) adalah yang di bawah ini, khususnya karena Anda ingin menguraikan ke halaman web.
Keluaran:
sumber
used: 96.00%, buffers: 26.53%awk: (FILENAME=- FNR=4) fatal: division by zero attempted
$ cat /etc/issue CentOS release 6.7 (Final)
$ free | awk '/Mem/{printf("used: %.2f%"), $3/$2*100} /buffers\/cache/{printf(", buffers: %.2f%"), $4/($3+$4)*100} /Swap/{printf(", swap: %.2f%"), $3/$2*100}' used: 12.91%, buffers: 96.24%awk: (FILENAME=- FNR=4) fatal: division by zero attempted $ free total used free shared buffers cached Mem: 15429704 1991416 13438288 164 151556 1259584 -/+ buffers/cache: 580276 14849428 Swap: 0 0 0
Menambahkan baris baru setelah nomor swap
sumber
Untuk hingga CentOS 7 Anda dapat mencoba
untuk melihat penggunaan nyata dari memori oleh proses.
sumber