GNU/Linux >> Belajar Linux >  >> Linux

Mengubah statvf menjadi persentase gratis dengan benar

Pada Edit #2 Anda, penghitungan % Penggunaan perlu diperbarui menjadi ini agar cocok dengan keluaran df:

100.0 * (double) (vfs.f_blocks - vfs.f_bfree) / (double) (vfs.f_blocks - vfs.f_bfree + vfs.f_bavail)

Pemikiran:
Digunakan =f_blocks - f_bfree
Tersedia =f_bavail
df % =Digunakan / (Digunakan + Tersedia)


df data mungkin didasarkan pada f_bavail , bukan f_bfree . Anda mungkin merasa terbantu untuk melihat kode sumber ke df untuk melihat cara kerjanya. Ini memiliki sejumlah kasus tepi yang perlu ditangani (misalnya, ketika ruang yang digunakan melebihi jumlah ruang yang tersedia untuk pengguna non-root), tetapi kode yang relevan untuk kasus normal ada di sini:

  uintmax_t u100 = used * 100;
  uintmax_t nonroot_total = used + available;
  pct = u100 / nonroot_total + (u100 % nonroot_total != 0);

Dengan kata lain, 100 * used / (used + available) , tercakup. Memasukkan nilai dari output df Anda memberikan 100 * 14159676 / (14159676 + 25837672) = 35.4015371 , yang dibulatkan menjadi 36%, sama seperti df dihitung.


Linux
  1. Mengonversi kode Python 2 Anda ke Python 3

  2. Bagaimana Cara Benar Menambahkan Path To Path?

  3. Linux – Penggunaan Memori Nyata?

  1. gratis:perintah tidak ditemukan

  2. Temukan ukuran dan ruang kosong dari sistem file yang berisi file tertentu

  3. Bagaimana cara mendapatkan% penggunaan memori dengan vmstat?

  1. Linux – Menentukan Penggunaan Memori dengan Benar di Linux?

  2. Mengapa Unix masih digunakan jika Linux didasarkan padanya, dan Linux gratis?

  3. Mengapa Swap digunakan ketika banyak memori kosong yang tersisa?