#!/bin/sh

if [ $# -eq 0 ]; then
    echo "Usage: $0 <command>"
    echo "Example: $0 'npm run build'"
    exit 1
fi

COMMAND="$@"
LOG_FILE="stats.log"
TEMP_PID_FILE="/tmp/monitor_pid_$$"

# Очищаем старый лог-файл
echo "Timestamp,CPU(%),Memory(GB),Command" > "$LOG_FILE"

# Функция для получения памяти в GB
get_memory_gb() {
    local pid=$1
    local kb_mem=$(ps -p "$pid" -o rss=)
    local gb_mem=$(echo "scale=2; $kb_mem / 1024 / 1024" | bc)
    echo "$gb_mem"
}

# Функция для мониторинга
monitor() {
    local pid=$1
    echo "Monitoring PID: $pid"
    while ps -p "$pid" > /dev/null; do
        local cpu_usage=$(ps -p "$pid" -o %cpu=)
        local mem_usage=$(get_memory_gb "$pid")
        echo $mem_usage
        local cmd=$(ps -p "$pid" -o cmd=)
        echo "$(date '+%Y-%m-%d %H:%M:%S'),$cpu_usage,$mem_usage,$cmd" >> "$LOG_FILE"
        sleep 1
    done
}

# Запускаем команду
$COMMAND &
CMD_PID=$!
echo "$CMD_PID" > "$TEMP_PID_FILE"

# Начинаем мониторинг
monitor "$CMD_PID"

# Удаляем временный файл
rm -f "$TEMP_PID_FILE"

echo "Monitoring complete. Data saved to $LOG_FILE"
echo "Format: Timestamp, CPU(%), Memory(GB), Command"
