#!/bin/bash
# wowa-rapport — stellt die Reihe aus wowa-stundenrapport als Tabelle dar.
#
# Der Sammler schreibt absolute CPU-Sekunden, nicht die Differenz: ein Neustart
# setzt den Zaehler zurueck, und eine gespeicherte Differenz waere dann fuer immer
# falsch. Die Spalte CPU/h entsteht deshalb erst hier — und bleibt leer, wo der
# Vorwert fehlt oder kleiner ist (= der Prozess wurde dazwischen neu gestartet).
# Genau diese Luecke ist die Neustart-Marke in der Reihe.
set -u
F=${F:-/var/log/wowa-diag/stundenrapport.csv}
N=${1:-24}

[ -r "$F" ] || { echo "keine Reihe unter $F" >&2; exit 1; }

{ head -1 "$F"; tail -n +2 "$F" | sort | tail -n "$N"; } |
awk -F';' '
  NR==1 { printf "%-14s %5s %5s %5s %4s %7s %9s %9s %7s %7s %5s %7s\n",
                 "Stunde","mima","glib","RSS","EST","CPU/h","Zugriffe","Traffic","H1","H2","H3","Fehler"
          next }
  {
    cpu = ($5 != "" && vor != "" && $6+0 >= vor+0) ? sprintf("%d", $6-vor) : ""
    vor = $6
    tb  = ($8 != "") ? sprintf("%.0f MB", $8/1048576) : "-"
    printf "%-14s %5s %5s %5s %4s %7s %9s %9s %7s %7s %5s %7s\n",
           $1, $2, $3, $4, $5, cpu, $7, tb, $9, $10, $11, $12
  }'
