#!/bin/sh # Script by Ypnose - http://ywstd.fr # /proc/meminfo = vmstat -s (procps-ng sysinfo.c) # MemTotal = total memory (kb_main_total) # MemFree = free memory (kb_main_free) # Buffers = buffer memory (kb_main_buffers) # Cached = (kb_page_cache) # SReclaimable = (kb_slab_reclaimable) # Cached + SReclaimable = swap cache (kb_main_cached) # kb_main_used = mem_used = kb_main_total - kb_main_free - kb_main_cached - kb_main_buffers printf " TOTAL USED FREE BUF CACHE\n" # free command output # -w: wide mode # Mem: kb_main_total kb_main_used kb_main_free kb_main_buffers kb_main_cached free -wm | awk ' /^Mem/{ printf("free: %d %d %d %d %d\n", $2, $3, $4, $6, $7) } ' # vmstat command output vmstat -s -SM | awk ' BEGIN { printf("vmstat: ") } /(total|used|free|buffer) memory|swap cache/{ printf("%d ", $1) } END { printf("\n") } ' # /proc/meminfo output awk ' /^MemTotal:/ { memtot = $2 / 1024; next } /^MemFree:/ { memfree = $2 / 1024; next } /^Buffers:/ { membuff = $2 / 1024; next } /^Cached:/ { memcach = $2 / 1024; next } /^SReclaimable:/ { memrecl = $2 / 1024; next } { memused = memtot - memfree - membuff - memcach - memrecl } { memboth = memcach - memrecl } { membc = membuff + memboth } END { printf "meminfo: %d %d %d %d %d BC:%d\n", memtot, memused, memfree, membuff, memboth, membc } ' /proc/meminfo