aboutsummaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authoryalh76 <yalh@yahoo.com>2019-08-11 01:40:06 +0200
committeryalh76 <yalh@yahoo.com>2019-08-11 01:40:06 +0200
commitd406a87de2856be91b82005517106bab0622d28b (patch)
tree2f2d290a9f34f973a4c16e286bd6415191f33340 /scripts
parent126e04bea66a78e0e40b4f08445e0e1e2e132ccb (diff)
downloadmastodon_ynh-d406a87de2856be91b82005517106bab0622d28b.tar.gz
mastodon_ynh-d406a87de2856be91b82005517106bab0622d28b.tar.bz2
mastodon_ynh-d406a87de2856be91b82005517106bab0622d28b.zip
fix ynh_check_ram
Diffstat (limited to 'scripts')
-rw-r--r--scripts/install1
-rw-r--r--scripts/ynh_check_ram72
2 files changed, 73 insertions, 0 deletions
diff --git a/scripts/install b/scripts/install
index daa4153..1810c9b 100644
--- a/scripts/install
+++ b/scripts/install
@@ -11,6 +11,7 @@ source ynh_install_ruby
source ynh_add_extra_apt_repos__3
source ynh_send_readme_to_admin__2
source ynh_add_swap
+source ynh_check_ram
source /usr/share/yunohost/helpers
#=================================================
diff --git a/scripts/ynh_check_ram b/scripts/ynh_check_ram
new file mode 100644
index 0000000..11012a3
--- /dev/null
+++ b/scripts/ynh_check_ram
@@ -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
+}