Some checks failed
Build and Push Golang Image / build-and-push (push) Has been cancelled
51 lines
1.2 KiB
Bash
Executable File
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"
|