You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.6 KiB
71 lines
2.6 KiB
#!/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
|
|
|
|
|