container-images/node/psstat.sh
skeris 91fa0bca2e
Some checks failed
Build and Push Golang Image / build-and-push (push) Has been cancelled
ci: add workflow to automation golang image creation
2025-05-27 21:44:44 +03:00

51 lines
1.2 KiB
Bash
Executable File

#!/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"