From ac781bc58165d89f9cab753d4c1599b689aca583 Mon Sep 17 00:00:00 2001 From: Abhishek Keshri Date: Tue, 9 Aug 2022 06:28:34 +0530 Subject: [PATCH] Add ram_info.sh --- scripts/ram_info.sh | 76 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100755 scripts/ram_info.sh diff --git a/scripts/ram_info.sh b/scripts/ram_info.sh new file mode 100755 index 0000000..25677e2 --- /dev/null +++ b/scripts/ram_info.sh @@ -0,0 +1,76 @@ +#!/usr/bin/env bash +# setting the locale, some users have issues with different locales, this forces the correct one +export LC_ALL=en_US.UTF-8 + +current_dir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" +source $current_dir/utils.sh + +get_percent() +{ + case $(uname -s) in + Linux) + total_mem_gb=$(free -g | awk '/^Mem/ {print $2}') + used_mem=$(free -g | awk '/^Mem/ {print $3}') + total_mem=$(free -h | awk '/^Mem/ {print $2}') + if (( $total_mem_gb == 0)); then + memory_usage=$(free -m | awk '/^Mem/ {print $3}') + total_mem_mb=$(free -m | awk '/^Mem/ {print $2}') + echo $memory_usage\M\B/$total_mem_mb\M\B + elif (( $used_mem == 0 )); then + memory_usage=$(free -m | awk '/^Mem/ {print $3}') + echo $memory_usage\M\B/$total_mem_gb\G\B + else + memory_usage=$(free -g | awk '/^Mem/ {print $3}') + echo $memory_usage\G\B/$total_mem_gb\G\B + fi + ;; + + Darwin) + # Get used memory blocks with vm_stat, multiply by page size to get size in bytes, then convert to MiB + used_mem=$(vm_stat | grep ' active\|wired ' | sed 's/[^0-9]//g' | paste -sd ' ' - | awk -v pagesize=$(pagesize) '{printf "%d\n", ($1+$2) * pagesize / 1048576}') + total_mem=$(system_profiler SPHardwareDataType | grep "Memory:" | awk '{print $2 $3}') + if (( $used_mem < 1024 )); then + echo $used_mem\M\B/$total_mem + else + memory=$(($used_mem/1024)) + echo $memory\G\B/$total_mem + fi + ;; + + FreeBSD) + # Looked at the code from neofetch + hw_pagesize="$(sysctl -n hw.pagesize)" + mem_inactive="$(($(sysctl -n vm.stats.vm.v_inactive_count) * hw_pagesize))" + mem_unused="$(($(sysctl -n vm.stats.vm.v_free_count) * hw_pagesize))" + mem_cache="$(($(sysctl -n vm.stats.vm.v_cache_count) * hw_pagesize))" + + free_mem=$(((mem_inactive + mem_unused + mem_cache) / 1024 / 1024)) + total_mem=$(($(sysctl -n hw.physmem) / 1024 / 1024)) + used_mem=$((total_mem - free_mem)) + echo $used_mem + if (( $used_mem < 1024 )); then + echo $used_mem\M\B/$total_mem + else + memory=$(($used_mem/1024)) + echo $memory\G\B/$total_mem + fi + ;; + + CYGWIN*|MINGW32*|MSYS*|MINGW*) + # TODO - windows compatability + ;; + esac +} + +main() +{ + # storing the refresh rate in the variable RATE, default is 5 + RATE=$(get_tmux_option "@tmux2k-refresh-rate" 5) + ram_label=$(get_tmux_option "@tmux2k-ram-usage-label" "") + ram_percent=$(get_percent) + echo "$ram_label $ram_percent" + sleep $RATE +} + +#run main driver +main