#!/bin/bash
# monitor memory usage of a command

export COMMAND="allocate"
export REFRESH_INTERVAL_SECONDS="2"

export LOG_FILE="memory_usage.log"

get_mem_usage () {
    # Extract memory usage as reported by the system
    local total_mem used_mem
    total_mem=$(awk '/^MemTotal:/ {print $2}' /proc/meminfo)
    used_mem=$(awk '/^MemAvailable:/ {print $2}' /proc/meminfo)

    # Calculate used memory in MB
    echo "$(TZ='America/Sao_Paulo' date --iso=seconds): $(( (total_mem - used_mem) / 1024 )) MB"
}
export -f get_mem_usage

echo "log into ${LOG_FILE}"

while true
do
    get_mem_usage | tee -a ${LOG_FILE}
    sleep ${REFRESH_INTERVAL_SECONDS}
done
