Răsfoiți Sursa

Fix for #2005 to look for MemAvailable, use if exists otherwise calculate it

BourneID 7 ani în urmă
părinte
comite
bb15be9e80
1 a modificat fișierele cu 9 adăugiri și 20 ștergeri
  1. 9 20
      lgsm/functions/info_distro.sh

+ 9 - 20
lgsm/functions/info_distro.sh

@@ -93,38 +93,27 @@ load=$(uptime|awk -F 'load average: ' '{ print $2 }')
 
 
 # Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated
 # Issue #2005 - Kernel 3.14+ contains MemAvailable which should be used. All others will be calculated
 
 
-# define the following as integers due to AWK string issues
-declare -i physmemtotalkb
-declare -i physmemfreekb
-declare -i physmembufferskb
-declare -i physmemcachedkb
-declare -i physmemactualfreekb
-
 # get the raw KB values of these fields
 # get the raw KB values of these fields
 physmemtotalkb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
 physmemtotalkb=$(grep MemTotal /proc/meminfo | awk '{print $2}')
 physmemfreekb=$(grep ^MemFree /proc/meminfo | awk '{print $2}')
 physmemfreekb=$(grep ^MemFree /proc/meminfo | awk '{print $2}')
 physmembufferskb=$(grep ^Buffers /proc/meminfo | awk '{print $2}')
 physmembufferskb=$(grep ^Buffers /proc/meminfo | awk '{print $2}')
 physmemcachedkb=$(grep ^Cached /proc/meminfo | awk '{print $2}')
 physmemcachedkb=$(grep ^Cached /proc/meminfo | awk '{print $2}')
+physmemreclaimablekb=$(grep ^SReclaimable /proc/meminfo | awk '{print $2}')
 
 
 # check if MemAvailable Exists
 # check if MemAvailable Exists
 if grep -q ^MemAvailable /proc/meminfo; then
 if grep -q ^MemAvailable /proc/meminfo; then
-physmemactualfreekb=$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')
+    physmemactualfreekb=$(grep ^MemAvailable /proc/meminfo | awk '{print $2}')
 else
 else
-physmemactualfreekb=${physmemfreekb}+${physmembufferskb}+${physmemcachedkb}
+    physmemactualfreekb=$((${physmemfreekb}+${physmembufferskb}+${physmemcachedkb}))
 fi
 fi
 
 
 # Available RAM and swap.
 # 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"
-}
+physmemtotalmb=$((${physmemtotalkb}/1024))
+physmemtotal=$(numfmt --to=iec --from=iec --suffix=B "${physmemtotalkb}K")
+physmemfree=$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")
+physmemused=$(numfmt --to=iec --from=iec --suffix=B "$((${physmemtotalkb}-${physmemfreekb}-${physmembufferskb}-${physmemcachedkb}-${physmemreclaimablekb}))K")
+physmemavailable=$(numfmt --to=iec --from=iec --suffix=B "${physmemactualfreekb}K")
+physmemcached=$(numfmt --to=iec --from=iec --suffix=B "$((${physmemcachedkb}+${physmemreclaimablekb}))K")
 
 
 swaptotal=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapTotal /proc/meminfo | awk '{print $2}')K")
 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")
 swapfree=$(numfmt --to=iec --from=iec --suffix=B "$(grep ^SwapFree /proc/meminfo | awk '{print $2}')K")