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