#!/usr/bin/env bash # # Read memory usage in FreeBSD set -euo pipefail IFS=$'\n\t' DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" SLEEP_INTERVAL=${SLEEP_INTERVAL:-30} while true; do # TODO: Why not vm.stats.vm.v_page_size ? Are these the same? total_pages=$(sysctl -n vm.stats.vm.v_page_count) page_size=$(sysctl -n hw.pagesize) active=$(sysctl -n vm.stats.vm.v_active_count) inactive=$(sysctl -n vm.stats.vm.v_inactive_count) in_use_pages=$((active + inactive)) free_pages=$((total_pages - in_use_pages)) free_bytes=$((page_size * free_pages)) free_percent=$((100 * free_pages / total_pages)) text="" if [ $free_bytes -ge $((1024 * 1024 * 1024)) ]; then text="$((free_bytes / 1024 / 1024 / 1024)) GiB" elif [ $free_bytes -ge $((1024 * 1024)) ]; then text="$((free_bytes / 1024 / 1024)) MiB" elif [ $free_bytes -ge 1024 ]; then text="$((free_bytes / 1024)) KiB" else text="$(free_bytes) B" fi tooltip="${free_percent}%" jq --unbuffered --compact-output <