#!/bin/bash stty -echo INTERVAL=3 trap 'stty echo; exit' INT EXIT print_header() { echo "+----------------------------------------------------+--------------+----------+----------+----------------+" printf "| %-50s | %-12s | %-8s | %-8s | %-14s |\n" "NAME" "CONTAINER ID" "CPU %" "MEM %" "MEM USAGE" echo "+----------------------------------------------------+--------------+----------+----------+----------------+" } print_container_info() { local container_info=($1) local container_name=${container_info[0]} local container_id=${container_info[1]} local container_stats=(${container_info[@]:2}) printf "| %-50s | %-12s | %-8s | %-8s | %-14s |\n" "$container_name" "$container_id" "${container_stats[0]}" "${container_stats[1]}" "${container_stats[2]}" } while true; do DOCKER_STATS=$(docker stats --no-stream --format "{{.Name}}\t{{.ID}}\t{{.CPUPerc}}\t{{.MemPerc}}\t{{.MemUsage}}") clear if [[ ! -z "$DOCKER_STATS" ]]; then print_header while IFS= read -r line; do print_container_info "$(echo "$line" | awk '{gsub(/\//, " "); print}')" done <<< "$DOCKER_STATS" echo "+----------------------------------------------------+--------------+----------+----------+----------------+" else echo "No active containers found" break fi sleep $INTERVAL done