Просмотр исходного кода

Use /proc/meminfo instead of free -m (#1971)

* Use /proc/meminfo instead of free -m

Also uses numfmt which is included in coreutils since version 8.24.
Max Staff 7 лет назад
Родитель
Сommit
69efb4363f
1 измененных файлов с 14 добавлено и 22 удалено
  1. 14 22
      lgsm/functions/info_distro.sh

+ 14 - 22
lgsm/functions/info_distro.sh

@@ -90,31 +90,23 @@ days=$(( uptime/60/60/24 ))
 load=$(uptime|awk -F 'load average: ' '{ print $2 }')
 
 ## Memory information
-# Available RAM and swap.
-
-# Older versions of free do not support -h option.
-if [ "$(free -h > /dev/null 2>&1; echo $?)" -ne "0" ]; then
-	humanreadable="-m"
-else
-	humanreadable="-h"
-fi
 
-physmemtotal=$(free ${humanreadable} | awk '/Mem:/ {print $2}')
-physmemtotalmb=$(free -m | awk '/Mem:/ {print $2}')
-physmemused=$(free ${humanreadable} | awk '/Mem:/ {print $3}')
-physmemfree=$(free ${humanreadable} | awk '/Mem:/ {print $4}')
-oldfree=$(free ${humanreadable} | awk '/cache:/')
-if [ -n "${oldfree}" ]; then
+# Available RAM and swap.
+physmemtotalmb=$(($(grep MemTotal /proc/meminfo | awk '{print $2}')/1024))
+physmemtotal=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^MemTotal /proc/meminfo | awk '{print $2}')K")
+physmemfree=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')K")
+physmemused=$(numfmt --to=iec --from=iec --suffix=B "$(($(grep "^MemTotal\:" /proc/meminfo | awk '{print $2}')-$(grep "^MemFree\:" /proc/meminfo | awk '{print $2}')-$(grep "^Buffers\:" /proc/meminfo | awk '{print $2}')-$(grep "^Cached\:" /proc/meminfo | awk '{print $2}')-$(grep "^SReclaimable\:" /proc/meminfo | awk '{print $2}')))K")
+{ # try
+	physmemavailable=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')K")
+	physmemcached=$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^Cached /proc/meminfo | awk '{print $2}')+$(grep "^SReclaimable\:" /proc/meminfo | awk '{print $2}')))K")
+} 2>/dev/null || { # fail silently, catch
 	physmemavailable="n/a"
 	physmemcached="n/a"
-else
-	physmemavailable=$(free ${humanreadable} | awk '/Mem:/ {print $7}')
-	physmemcached=$(free ${humanreadable} | awk '/Mem:/ {print $6}')
-fi
+}
 
-swaptotal=$(free ${humanreadable} | awk '/Swap:/ {print $2}')
-swapused=$(free ${humanreadable} | awk '/Swap:/ {print $3}')
-swapfree=$(free ${humanreadable} | awk '/Swap:/ {print $4}')
+swaptotal=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")
+swapfree=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")
+swapused=$(numfmt --to=iec --from=iec --suffix=B "$(($(grep ^SwapTotal /proc/meminfo | awk '{print $2}')-$(grep ^SwapFree /proc/meminfo | awk '{print $2}')))K")
 
 ### Disk information
 
@@ -179,4 +171,4 @@ if [ -z "${extip}" ]; then
 			echo "x.x.x.x"
 		fi
 	fi
-fi
+fi