#!/bin/bash # Check the amount of available RAM # # usage: ynh_check_ram [--required=RAM required in Mb] [--no_swap|--only_swap] [--free_ram] # | arg: -r, --required= - Amount of RAM required in Mb. The helper will return 0 is there's enough RAM, or 1 otherwise. # If --required isn't set, the helper will print the amount of RAM, in Mb. # | arg: -s, --no_swap - Ignore swap # | arg: -o, --only_swap - Ignore real RAM, consider only swap. # | arg: -f, --free_ram - Count only free RAM, not the total amount of RAM available. ynh_check_ram () { # Declare an array to define the options of this helper. declare -Ar args_array=( [r]=required= [s]=no_swap [o]=only_swap [f]=free_ram ) local required local no_swap local only_swap # Manage arguments with getopts ynh_handle_getopts_args "$@" required=${required:-} no_swap=${no_swap:-0} only_swap=${only_swap:-0} local total_ram=$(vmstat --stats --unit M | grep "total memory" | awk '{print $1}') local total_swap=$(vmstat --stats --unit M | grep "total swap" | awk '{print $1}') local total_ram_swap=$(( total_ram + total_swap )) local free_ram=$(vmstat --stats --unit M | grep "free memory" | awk '{print $1}') local free_swap=$(vmstat --stats --unit M | grep "free swap" | awk '{print $1}') local free_ram_swap=$(( free_ram + free_swap )) # Use the total amount of ram local ram=$total_ram_swap if [ $free_ram -eq 1 ] then # Use the total amount of free ram ram=$free_ram_swap if [ $no_swap -eq 1 ] then # Use only the amount of free ram ram=$free_ram elif [ $only_swap -eq 1 ] then # Use only the amount of free swap ram=$free_swap fi else if [ $no_swap -eq 1 ] then # Use only the amount of free ram ram=$total_ram elif [ $only_swap -eq 1 ] then # Use only the amount of free swap ram=$total_swap fi fi if [ -n "$required" ] then # Return 1 if the amount of ram isn't enough. if [ $ram -lt $required ] then return 1 else return 0 fi # If no RAM is required, return the amount of available ram. else echo $ram fi }