Các tệp / công cụ tiêu chuẩn báo cáo bộ nhớ dường như có các định dạng khác nhau trên các bản phân phối Linux khác nhau. Ví dụ: trên Arch và Ubuntu.
Cổng vòm
$ free total used free shared buff/cache available Mem: 8169312 3870392 2648348 97884 1650572 4110336 Swap: 16777212 389588 16387624 $ head /proc/meminfo MemTotal: 8169312 kB MemFree: 2625668 kB MemAvailable: 4088520 kB Buffers: 239688 kB Cached: 1224520 kB SwapCached: 17452 kB Active: 4074548 kB Inactive: 1035716 kB Active(anon): 3247948 kB Inactive(anon): 497684 kB
Ubuntu
$ free total used free shared buffers cached Mem: 80642828 69076080 11566748 3063796 150688 58358264 -/+ buffers/cache: 10567128 70075700 Swap: 20971516 5828472 15143044 $ head /proc/meminfo MemTotal: 80642828 kB MemFree: 11565936 kB Buffers: 150688 kB Cached: 58358264 kB SwapCached: 2173912 kB Active: 27305364 kB Inactive: 40004480 kB Active(anon): 7584320 kB Inactive(anon): 4280400 kB Active(file): 19721044 kB
Vì vậy, làm thế nào tôi có thể di chuyển một cách hợp lý (chỉ trên các bản phân phối Linux) và đáng tin cậy để có được số lượng bộ nhớ mà không bao gồm hoán đổi có sẵn để phần mềm của tôi sử dụng tại một thời điểm cụ thể? Có lẽ đó là những gì được hiển thị là "khả dụng" và "MemAv Available" trong đầu ra của free
và cat /proc/meminfo
trong Arch nhưng làm cách nào để tôi có được điều tương tự trong Ubuntu hoặc bản phân phối khác?
awk -v low=$(grep low /proc/zoneinfo | awk '{k+=$2}END{print k}') '{a[$1]=$2}END{m=a["MemFree:"]+a["Active(file):"]+a["Inactive(file):"]+a["SReclaimable:"]; print a["MemAvailable:"],m-low}' /proc/meminfo
để cung cấp cho tôi cùng một số được in hai lần. Tuy nhiên, số thứ hai (sự hiểu biết của tôi về thuật toán mà bạn đề xuất) cao hơn sốMemAvailable
được hiển thị trong/proc/meminfo
. Tôi đang làm gì sai?