Eu criei um script para calcular shmmax shmall shmmini
Total_Memory_M=$(dmidecode -t 17 | grep Size | awk '{print $2}' | grep -o '[0-9]\+' | paste -sd+ | bc)
Total_Memory_G=$(echo $Total_Memory_M /1024 | bc)
clear
while [[ ! ${MEM_SZ} =~ ^[0-9]+$ ]]; do
echo -n "Total System Memory: $Total_Memory_G"GB" == $Total_Memory_M"MB""
echo ""
read -p "Memory Size for Oracle [$(echo $Total_Memory_M -1024 | bc)]: " MEM_SZ
MEM_SZ="${MEM_SZ:-$(echo $Total_Memory_M -1024 | bc)}"
clear
done
mem_bytes=$MEM_SZ*1024*1024
pgsz=$(getconf PAGE_SIZE)/1024
shmmax=$(echo $mem_bytes /2*1024 | bc )
shm_kb=$(echo $mem_bytes /2 | bc )
shmall=$(expr $shm_kb/$pgsz | bc)
clear
echo "kernel.shmmax = $shmmax"
echo "kernel.shmall = $shm_kb"
echo "kernel.shmmni = $(getconf PAGE_SIZE)"
não quero ler a entrada do usuário em termos de GB, gb, g, G, M, MB, mb, m também o valor padrão mostrado em GB e MB
EX:
Total System Memory: 8GB == 8192MB
Memory Size for Oracle [7GB:7168MB]:8192M or 8G ...etc(GB,gb,g,G,M,MB,mb,m)
também se houver algum ajuste para o script será apreciado