committed by
GitHub
1 changed files with 71 additions and 0 deletions
@ -0,0 +1,71 @@ |
|||||
|
#!/usr/bin/env bash |
||||
|
# Issue 213 |
||||
|
|
||||
|
dsm=7 |
||||
|
ram=yes |
||||
|
Error= |
||||
|
Off= |
||||
|
synoinfo="/etc/synoinfo.conf" |
||||
|
|
||||
|
# Optionally set mem_max_mb to the amount of installed memory |
||||
|
if [[ $dsm -gt "6" ]]; then # DSM 6 as has no dmidecode |
||||
|
if [[ $ram == "yes" ]] && [[ -f /usr/sbin/dmidecode ]]; then |
||||
|
# Get total amount of installed memory |
||||
|
#IFS=$'\n' read -r -d '' -a array < <(dmidecode -t memory | grep "[Ss]ize") # GitHub issue #86, 87 |
||||
|
IFS=$'\n' read -r -d '' -a array < <(dmidecode -t memory |\ |
||||
|
grep -E "[Ss]ize: [0-9]+ [MG]{1}[B]{1}$") # GitHub issue #86, 87, 106 |
||||
|
if [[ ${#array[@]} -gt "0" ]]; then |
||||
|
num="0" |
||||
|
while [[ $num -lt "${#array[@]}" ]]; do |
||||
|
check=$(printf %s "${array[num]}" | awk '{print $1}') |
||||
|
if [[ ${check,,} == "size:" ]]; then |
||||
|
ramsize=$(printf %s "${array[num]}" | awk '{print $2}') # GitHub issue #86, 87 |
||||
|
bytes=$(printf %s "${array[num]}" | awk '{print $3}') # GitHub issue #86, 87 |
||||
|
if [[ $ramsize =~ ^[0-9]+$ ]]; then # Check $ramsize is numeric # GitHub issue #86, 87 |
||||
|
if [[ $bytes == "GB" ]]; then # DSM 7.2 dmidecode returned GB |
||||
|
ramsize=$((ramsize * 1024)) # Convert to MB # GitHub issue #107 |
||||
|
fi |
||||
|
if [[ $ramtotal ]]; then |
||||
|
ramtotal=$((ramtotal +ramsize)) |
||||
|
else |
||||
|
ramtotal="$ramsize" |
||||
|
fi |
||||
|
fi |
||||
|
fi |
||||
|
num=$((num +1)) |
||||
|
done |
||||
|
fi |
||||
|
# Set mem_max_mb to the amount of installed memory |
||||
|
setting="$(/usr/syno/bin/synogetkeyvalue "$synoinfo" mem_max_mb)" |
||||
|
settingbak="$(/usr/syno/bin/synogetkeyvalue "${synoinfo}".bak mem_max_mb)" # GitHub issue #107 |
||||
|
|
||||
|
echo "ramtotal: $ramtotal" |
||||
|
echo "setting: $setting" |
||||
|
echo "settingbak: $settingbak" |
||||
|
|
||||
|
if [[ $ramtotal =~ ^[0-9]+$ ]]; then # Check $ramtotal is numeric |
||||
|
if [[ $ramtotal -gt "$setting" ]]; then |
||||
|
|
||||
|
echo "ramtotal -gt setting" |
||||
|
|
||||
|
elif [[ $setting -gt "$ramtotal" ]] && [[ $setting -gt "$settingbak" ]]; # GitHub issue #107 |
||||
|
then |
||||
|
|
||||
|
echo "setting -gt ramtotal and setting -gt settingbak" |
||||
|
|
||||
|
elif [[ $ramtotal == "$setting" ]]; then |
||||
|
|
||||
|
echo "ramtotal == setting" |
||||
|
|
||||
|
else [[ $ramtotal -lt "$setting" ]] |
||||
|
|
||||
|
echo "ramtotal -lt setting" |
||||
|
|
||||
|
fi |
||||
|
|
||||
|
else |
||||
|
echo -e "\n${Error}ERROR${Off} Total memory size is not numeric: '$ramtotal'" |
||||
|
fi |
||||
|
fi |
||||
|
fi |
||||
|
|
||||
Loading…
Reference in new issue