Der Stopp-Knopf, den der Anleitungstext seit jeher versprach

Zwei Maengel aus dem Rundgang vom 22.8. behoben.

1. STOPP-KNOPF. Die Konsole nannte "⏹ Aufzeichnung stoppen", es gab ihn nicht.
   Christoph drueckte "Call beendet" und den Not-Aus -- beide schreiben nur
   Marken -- und die Messung lief weiter, waehrend der Core sein Telefon mit
   5 Pings/s bearbeitete. Jetzt legt der Knopf stop.flag ab, und die
   Warteschleife des Messskripts bricht darauf ab.

2. ZWEITES TELEFON. Der Beobachter las immer schon beide Geraete, hielt die
   Zahlen aber nur im Speicher fuer die Anzeige. Da das S22 per Automatik
   immer auf dem GEGEN-AP sitzt, fehlte damit ausgerechnet die Strecke, die
   die Alltagsabdeckung zeigt -- der Terrassen-Vergleich war nicht zu fuehren.
   Jetzt: zweiter Ping (walk-ping-iphone.csv) und beide-telefone.csv im
   2-s-Takt mit iface + Signal je Geraet.

Beim Testen kamen zwei Fehler ans Licht, die den naechsten Lauf gekostet
haetten:

- `PINGER=$(ping_lauf ...)` blockiert. Die Kommandosubstitution wartet, bis die
  stdout-Pipe schliesst, und der Hintergrundjob darin haelt sie offen. Das
  Skript stand in dieser Zeile, der zweite Ping wurde nie gestartet -- und es
  sah von aussen aus wie ein normal laufender Lauf. Die Funktion laeuft in der
  aktuellen Shell, also liefert $! danach die richtige PID.
- `kill $SAMPLER` traf nur den Wrapper. Dessen Subshell samt SSH-Sitzung wurde
  dabei verwaist und lief weiter: nach dem Stopp hielt der Core stumm eine
  Sampler-Sitzung offen. Wer den Vater zuerst killt, verliert den Zugriff auf
  die Kinder -- jetzt killbaum(), Kinder zuerst.

Mitgenommen von der Rotationsliste: tp6-monitor-core.sh und der Ping in
tp25-walk-messung.sh laufen jetzt ueber `sshpass -e` statt `-p`. Damit steht
das Router-Passwort in keiner Kommandozeile mehr. `pgrep -fl "sshpass -p"`
ist leer. Offen bleibt tp25-pin-s22.sh.

Abnahme: Lauf gestartet, beide Ziele gepingt (10.40.10.178 + .196), ein Klick
auf den Stopp-Knopf, danach kein Prozess und keine SSH-Sitzung mehr uebrig,
Pin geloest.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
2026-08-22 23:11:07 +02:00
parent ecc44b5af4
commit 6cd9db61d5
5 changed files with 152 additions and 35 deletions

View File

@@ -129,7 +129,7 @@ Entscheidung — und sie steht unter dem Vorbehalt, dass 20 MHz vorher gemessen
---
## Zwei Werkzeugmängel, die dieser Lauf aufgedeckt hat
## Zwei Werkzeugmängel, die dieser Lauf aufgedeckt hat — ✅ beide behoben (2026-08-22)
1. 🔴 **Es gibt keinen Stopp-Knopf.** Christoph drückte 22:53:26 „📴 Call beendet" und
„⛔ Last sofort stoppen" — beides schreibt nur Marken (`ABORT_killed=0`, es gab keine
@@ -140,3 +140,14 @@ Entscheidung — und sie steht unter dem Vorbehalt, dass 20 MHz vorher gemessen
Telefone, hält die Zahlen aber nur im Speicher für die Anzeige. Nachträglich ließ sich nur
das *Roaming-Log* am Manager retten (`manager-log.txt`) — Ereignisse, keine Zeitreihe.
Deshalb fehlt oben der direkte Terrassen-Vergleich.
**Behoben.** Die Konsole hat jetzt einen echten `⏹ Aufzeichnung stoppen`, der die Messung
beendet (`stop.flag`), und es werden **beide** Telefone gepingt (`walk-ping.csv` +
`walk-ping-iphone.csv`) sowie beide im 2-s-Takt mitgeschrieben (`beide-telefone.csv`).
Beim Testen fielen dabei zwei weitere Fehler auf, die beide diesen Lauf betroffen hätten:
`PINGER=$(ping_lauf …)` blockierte (Kommandosubstitution wartet auf die stdout-Pipe, die der
Hintergrundjob offen hält) — der zweite Ping wäre nie gestartet; und `kill $SAMPLER` traf nur
den Wrapper, dessen Subshell samt SSH-Sitzung verwaist weiterlief. Jetzt wird der
Prozessbaum kindzuerst beendet.
⇒ **Der nächste Lauf beantwortet die Terrassen-Frage.** Diesmal nicht.