Wow … danke für das Lob – und vor allem danke für eure Reaktionen!
Ich habe mir alles noch mal in Ruhe angeschaut und das Script direkt an den zwei wichtigen Stellen nachgebessert. Danke auch für den Hinweis mit der Warteschleife – da kam bei mir im „Bauscript“ tatsächlich bei jedem Zyklus eine Ausgabe. Das habe ich jetzt sauber gelöst.
Man sieht jetzt klar, dass das Script noch arbeitet und nicht hängt.
Hier nur kurz zur Info die neue Warteschleife:
Wie man sieht, sind das jetzt alles Variablen, die oben im Kopf definiert werden:
# -----------------------------
# Stop-Wartezeiten
# nur hier die Wartezeiten
# einstellen / ändern
# -----------------------------
STOP_MAX_WAIT_SEC=300 # max. Wartezeit auf sauberen Stop (300 = 5 Minuten)
STOP_CHECK_INTERVAL=10 # Prüfintervall in Sekunden
STOP_PROGRESS_EVERY=2 # alle X Durchläufe Fortschritt in der Konsole anzeigen
So kann man die Zeiten zentral anpassen, ohne im Script suchen zu müssen.
Das mit dem doppelten „Robust“ – ja, unschön !!!
Ist ein Überbleibsel vom Umbau, habe ich aber direkt geradegezogen. War mehr optisch störend als funktional kritisch.
Zum Thema screen: Danke für den Hinweis, da gehe ich noch mal sauber ran. Bei mir ist an der Stelle seit Jahren nichts passiert, aber ihr habt recht – sicher ist sicher. Ich baue da noch eine zusätzliche Rückversicherung ein, damit wirklich das richtige Screen-Fenster getroffen wird.
Ganz wichtig noch zu meiner Philosophie:
Passwörter gehören nicht ins Script. Gerade bei MySQL ist es ja sauber lösbar über eine .my.cnf im Home-Verzeichnis des Benutzers – so wie ich es im Beispiel beschrieben habe. Das ist für mich der deutlich bessere Weg.
Unterm Strich ist es ein bewusst schlankes Script, das vor dem Start alle wichtigen Punkte prüft und dann den Simulator sauber startet.
Für die nächste Version werden Start und Stop als separate, gekapselte Funktionen umgesetzt. Mit eigener Rückversicherung, ob der Vorgang wirklich erfolgreich war – und natürlich weiterhin mit zentral definierten Zeit-Variablen im Kopfbereich.
Danke euch auf jeden Fall für das Feedback – und ich freue mich schon, euch die nächsten Verbesserungen zu zeigen !
Ich habe mir alles noch mal in Ruhe angeschaut und das Script direkt an den zwei wichtigen Stellen nachgebessert. Danke auch für den Hinweis mit der Warteschleife – da kam bei mir im „Bauscript“ tatsächlich bei jedem Zyklus eine Ausgabe. Das habe ich jetzt sauber gelöst.
Man sieht jetzt klar, dass das Script noch arbeitet und nicht hängt.
Hier nur kurz zur Info die neue Warteschleife:
Code:
# ----------------------------
# Warte Zyklus auf sauber Stop
# ----------------------------
log_info "Warte auf sauberen Shutdown (max. ${STOP_MAX_WAIT_SEC}s)"
elapsed=0
loops=$(( STOP_MAX_WAIT_SEC / STOP_CHECK_INTERVAL ))
progress_counter=0
for ((i=1; i<=loops; i++)); do
sleep "${STOP_CHECK_INTERVAL}"
elapsed=$(( elapsed + STOP_CHECK_INTERVAL ))
progress_counter=$(( progress_counter + 1 ))
# Prozess beendet?
if [[ ! -d "/proc/${PID}" ]]; then
log_ok "Prozess nach ${elapsed}s sauber beendet"
break
fi
# Fortschrittsmeldung
if (( progress_counter % STOP_PROGRESS_EVERY == 0 )); then
remaining=$(( STOP_MAX_WAIT_SEC - elapsed ))
log_info "Shutdown läuft … ${elapsed}s vergangen, ${remaining}s verbleiben"
fi
done
if [[ -d "/proc/${PID}" ]]; then
log_warn "Prozess reagiert nicht nach ${STOP_MAX_WAIT_SEC}s – hartes KILL"
kill -9 "${PID}"
else
log_ok "Instanz sauber gestoppt"
fi
rm -f "${PID_DATEI}"Wie man sieht, sind das jetzt alles Variablen, die oben im Kopf definiert werden:
# -----------------------------
# Stop-Wartezeiten
# nur hier die Wartezeiten
# einstellen / ändern
# -----------------------------
STOP_MAX_WAIT_SEC=300 # max. Wartezeit auf sauberen Stop (300 = 5 Minuten)
STOP_CHECK_INTERVAL=10 # Prüfintervall in Sekunden
STOP_PROGRESS_EVERY=2 # alle X Durchläufe Fortschritt in der Konsole anzeigen
So kann man die Zeiten zentral anpassen, ohne im Script suchen zu müssen.
Das mit dem doppelten „Robust“ – ja, unschön !!!
Ist ein Überbleibsel vom Umbau, habe ich aber direkt geradegezogen. War mehr optisch störend als funktional kritisch.
Zum Thema screen: Danke für den Hinweis, da gehe ich noch mal sauber ran. Bei mir ist an der Stelle seit Jahren nichts passiert, aber ihr habt recht – sicher ist sicher. Ich baue da noch eine zusätzliche Rückversicherung ein, damit wirklich das richtige Screen-Fenster getroffen wird.
Ganz wichtig noch zu meiner Philosophie:
Passwörter gehören nicht ins Script. Gerade bei MySQL ist es ja sauber lösbar über eine .my.cnf im Home-Verzeichnis des Benutzers – so wie ich es im Beispiel beschrieben habe. Das ist für mich der deutlich bessere Weg.
Unterm Strich ist es ein bewusst schlankes Script, das vor dem Start alle wichtigen Punkte prüft und dann den Simulator sauber startet.
Für die nächste Version werden Start und Stop als separate, gekapselte Funktionen umgesetzt. Mit eigener Rückversicherung, ob der Vorgang wirklich erfolgreich war – und natürlich weiterhin mit zentral definierten Zeit-Variablen im Kopfbereich.
Danke euch auf jeden Fall für das Feedback – und ich freue mich schon, euch die nächsten Verbesserungen zu zeigen !
niemand ist eine Insel, und Selbsthilfe heißt nicht sich nur um sich zu kümmern. www.vamp-berlin.de www.grid-berlin.de


![[-]](https://www.gridtalk.de/images/collapse.png)