mirror of
https://github.com/YunoHost-Apps/mastodon_ynh.git
synced 2024-09-03 19:46:02 +02:00
fix ynh_check_ram
This commit is contained in:
parent
126e04bea6
commit
d406a87de2
2 changed files with 73 additions and 0 deletions
|
@ -11,6 +11,7 @@ source ynh_install_ruby
|
||||||
source ynh_add_extra_apt_repos__3
|
source ynh_add_extra_apt_repos__3
|
||||||
source ynh_send_readme_to_admin__2
|
source ynh_send_readme_to_admin__2
|
||||||
source ynh_add_swap
|
source ynh_add_swap
|
||||||
|
source ynh_check_ram
|
||||||
source /usr/share/yunohost/helpers
|
source /usr/share/yunohost/helpers
|
||||||
|
|
||||||
#=================================================
|
#=================================================
|
||||||
|
|
72
scripts/ynh_check_ram
Normal file
72
scripts/ynh_check_ram
Normal file
|
@ -0,0 +1,72 @@
|
||||||
|
#!/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
|
||||||
|
}
|
Loading…
Reference in a new issue