Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Sim Start | Stop script
#3
Code Review: sim_start_stop.sh



Was sehr gut ist

Struktur & Philosophie – Die klare Trennung von Prüfung, Logging und Aktionen ist vorbildlich. Der Kommentar "Keine Magie, keine Endlosschleifen" wird auch eingehalten.

Logging – Die doppelte Ausgabe (Konsole mit Farbe, Datei mit Timestamp) ist sauber gelöst. Die Trennung in log_info/warn/err/ok macht den Output übersichtlich.

abbruch_oder_status – Eine elegante Lösung, damit status immer durchläuft, während start bei Fehlern abbricht.

Robust/MySQL-Modi – Das auto/local/remote-System ist flexibel und praxisnah.



Probleme & Verbesserungsvorschläge

1. Doppelter Robust-Aufruf im start-Block

Der auskommentierte check_robust-Aufruf und der if-Block darunter sind ein Überbleibsel – hier sollte aufgeräumt werden.

Code:
# check_robust wird zweimal definiert / aufgerufen:
check_mysql  || ...
    if [[ "${AKTION}" == "start" ]]; then   # ← Dieser Block ist überflüssig
        check_robust || ...
    fi
# Zeile davor ist auskommentiert, aber die Logik ist redundant



2. Stop-Timeout potenziell sehr lang

Nach dem quit wartet das Script im schlechtesten Fall 5 Minuten (20 × 15 Sekunden). Eine Statusausgabe in der Schleife wäre hilfreich:

Code:
for ((i=0;i<20;i++)); do
    sleep 15   # = bis zu 300 Sekunden (5 Minuten!)
    log_info "Warte auf Prozessende... (${i}/20)"   # ← ergänzen
    [[ ! -d "/proc/${PID}" ]] && break
done



3. screen -p "${INSTNUM}" – Fenster-Tab-Logik fragil

Beim Start wird ein neues Screen-Fenster mit -t "${REGIONS_NAME}" "${INSTNUM}" erstellt – die Fensternummer ist dabei die letzte Zahl, die screen vergeben würde, nicht zwingend INSTNUM. Beim Stop wird dann blind auf -p "${INSTNUM}" zugegriffen. Das kann ins Leere laufen, wenn Fenster zwischenzeitlich umbenannt oder geschlossen wurden.



4. Kein Schutz gegen Race Conditions beim Start

Zwischen der PID-Prüfung und dem tatsächlichen Start gibt es ein kleines Zeitfenster. Nicht kritisch, aber bei einem Script das regelmäßig automatisiert läuft (z.B. per systemd/cron) sollte man das im Hinterkopf behalten.



5. mysql-Befehl ohne Credentials

Code:
mysql -e "USE ${MYSQL_DB};" >/dev/null 2>&1

Das funktioniert nur wenn ~/.my.cnf korrekt konfiguriert ist oder der Unix-Socket-Auth greift. Ansonsten schlägt der Check stillschweigend fehl und die Fehlermeldung ist irreführend. Ein Kommentar dazu wäre nützlich.



6. Kleinigkeit: Pflicht-Konfigurationsvariablen ohne Validierung

Die Variablen SCREEN_HAUPT und ERWARTETER_USER haben Platzhalterwerte (HAUPSCREEN-NAME, OPENSIMUNSER). Das Script sollte beim Start prüfen ob diese noch auf dem Default stehen:

Code:
if [[ "${SCREEN_HAUPT}" == "HAUPSCREEN-NAME" ]]; then
    log_err "SCREEN_HAUPT ist nicht konfiguriert!"
    exit 1
fi



Fazit

Ein solides, gut lesbares Admin-Script. Die größten praktischen Stolpersteine sind der doppelte Robust-Aufruf und die Screen-Fenster-Nummerierung. Alles andere sind eher Verfeinerungen als echte Fehler.
[Bild: footert5jul.jpg]
Zitieren


Nachrichten in diesem Thema
Sim Start | Stop script - von Gau Hax - 10.02.2026, 06:01
RE: Sim Start | Stop script - von Dorena Verne - 10.02.2026, 08:59
Sim Start | Stop script - von Akira - 10.02.2026, 12:50
RE: Sim Start | Stop script - von Gau Hax - Gestern, 09:32

Möglicherweise verwandte Themen…
Thema Verfasser Antworten Ansichten Letzter Beitrag
  Automatische Einstellung einer IP beim Start von OpenSim royalgrid 6 3.001 26.03.2024, 14:31
Letzter Beitrag: Manfred Aabye
  Database Cleanup Script [OpenSim 0.9.x] bimbam2103 29 33.648 15.05.2019, 10:54
Letzter Beitrag: Manfred Aabye
  start stop bash shell scripte Manfred Aabye 0 3.185 17.01.2019, 17:37
Letzter Beitrag: Manfred Aabye
  GitRepo OpenSim installieren per Script unter Debian Bogus Curry 0 4.992 11.12.2016, 23:19
Letzter Beitrag: Bogus Curry
  Start Region Rebecka Alder 3 7.937 02.04.2016, 15:11
Letzter Beitrag: Dorena Verne

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste