status.txt zeigt die Zusammenfassung, nicht die erste beliebige Zeile

Die Grund-Zeile nahm bei fehlendem Alarm schlicht die erste Ausgabezeile.
Beim ersten Prod-Lauf nach dem Versiegeln stand dort deshalb die
einmalige Notiz "Grundlage fuer die Rehash-Ueberwachung wird gesetzt"
statt des Ergebnisses "OK: Checkpoint N erstellt" - eine Randnotiz
verdeckte die Zusammenfassung.

Jetzt: bei Alarm die ALARM-Zeile, sonst die OK-Zeile, und erst wenn
beides fehlt die erste Zeile ueberhaupt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-26 19:25:45 +02:00
co-authored by Claude Opus 5
parent ed676ca4eb
commit e76b4ace88
+8 -5
View File
@@ -90,12 +90,15 @@ while true; do
*) LAGE="unbekannter Code" ;; *) LAGE="unbekannter Code" ;;
esac esac
echo "[$INSTANZ] $ZEIT exit=$CODE ($LAGE)" echo "[$INSTANZ] $ZEIT exit=$CODE ($LAGE)"
# Erste erklaerende Zeile mitnehmen: bei Alarm die ALARM-Zeile, sonst die # Die aussagekraeftigste Zeile mitnehmen, nicht einfach die erste.
# erste Ausgabezeile ueberhaupt. #
# Bei Alarm ist das die ALARM-Zeile. Sonst die Zusammenfassung ("OK: …") -
# denn ein Lauf kann davor beilaeufige Hinweise ausgeben (etwa das einmalige
# Setzen einer Ueberwachungs-Grundlage), und die verdeckten sonst das
# Ergebnis. Erst wenn beides fehlt, die erste Zeile ueberhaupt.
GRUND=$(grep -m1 '^ALARM: ' /tmp/lauf.log | sed 's/^ALARM: //') GRUND=$(grep -m1 '^ALARM: ' /tmp/lauf.log | sed 's/^ALARM: //')
if [ -z "$GRUND" ]; then [ -z "$GRUND" ] && GRUND=$(grep -m1 '^OK: ' /tmp/lauf.log)
GRUND=$(grep -m1 -v '^[[:space:]]*$' /tmp/lauf.log) [ -z "$GRUND" ] && GRUND=$(grep -m1 -v '^[[:space:]]*$' /tmp/lauf.log)
fi
{ {
printf '%s exit=%s %s\n' "$ZEIT" "$CODE" "$LAGE" printf '%s exit=%s %s\n' "$ZEIT" "$CODE" "$LAGE"
[ -n "$GRUND" ] && printf 'Grund: %s\n' "$GRUND" [ -n "$GRUND" ] && printf 'Grund: %s\n' "$GRUND"