MEMORY=`free | sed -n '2p' | awk '{print $4}'` USE_MEMORY_RATE=0.8
## 判断USE_MEMORY_RATE 值是否在0~1之间 PRODUCT=`bc << EOF scale = 0 a1 = $USE_MEMORY_RATE b1 = 10 a1 * b1 EOF` index=`expr index "${PRODUCT}" .` if [[ $index -ne 0 ]];then PRODUCT=${PRODUCT:0:${index}-1} fi if [[ $PRODUCT -ge 10 ]];then echo "USE_MEMORY_RATE should be greater than 0 and lower than 1,you set is ${USE_MEMORY_RATE}" exit fi if [[ $PRODUCT -le 0 ]];then echo "USE_MEMORY_RATE should be greater than 0 and lower than 1,you set is ${USE_MEMORY_RATE}" exit fi
# 算出80%内存的值,并进行取整。因为-Xmx 后不能跟小数 USE=`bc << EOF scale = 0 a1 = $MEMORY / 1024 b1 = $USE_MEMORY_RATE a1 * b1 EOF` INDEX=`expr index "${USE}" .` USE_MEMORY=${USE:0:${INDEX}-1} echo "engine use memory $USE_MEMORY M"