diff --git a/install.sh b/install.sh index 8e358ad..3d60a00 100755 --- a/install.sh +++ b/install.sh @@ -40,6 +40,7 @@ SRC="$(cd "$(dirname "$0")" && pwd)" START=1 FORCE=0 DEPS=1 +WEB_RUNNING=0 WEB=0 WEB_PORT="" WEB_BIND="0.0.0.0" @@ -80,9 +81,15 @@ if [ "$WEB" -eq 1 ]; then if [ "$WEB_PORT" -eq 8006 ]; then fail "Port 8006 gehoert dem Proxmox-Webinterface - bitte einen anderen waehlen." fi - if ss -ltn 2>/dev/null | grep -qE "[:.]${WEB_PORT}[[:space:]]"; then - warn "Auf Port ${WEB_PORT} lauscht bereits etwas - der Dienst wird sich " - warn "moeglicherweise nicht starten lassen." + # Laeuft unsere eigene Web-Oberflaeche schon, gehoert ihr der Port auch - + # das ist kein Konflikt, sondern der Normalfall bei einer Aktualisierung. + # Sie wird weiter unten gestoppt, bevor der Code ausgetauscht wird. + if systemctl is-active --quiet pvesnap-web.service 2>/dev/null; then + WEB_RUNNING=1 + elif ss -ltn 2>/dev/null | grep -qE "[:.]${WEB_PORT}[[:space:]]"; then + warn "Auf Port ${WEB_PORT} lauscht bereits etwas anderes - der Dienst" + warn "wird sich moeglicherweise nicht starten lassen." + ss -ltnp 2>/dev/null | grep -E "[:.]${WEB_PORT}[[:space:]]" | sed 's/^/ /' >&2 || true fi [ -n "$WEB_BIND" ] || fail "--bind erwartet eine Adresse" elif [ -n "$WEB_PORT" ]; then @@ -147,6 +154,25 @@ if [ "$DEPS" -eq 1 ]; then fi +# --- Laufendes anhalten ----------------------------------------------- +# Der Code wird gleich ersetzt. Die Web-Oberflaeche kann dabei noch Snapshots +# eingebunden haben - sie bekommt beim Stoppen ihr SIGTERM und haengt sauber +# aus. Wuerde sie einfach weiterlaufen, blieben rbd-Zuordnungen und +# Mountpunkte einer Fassung stehen, die es nicht mehr gibt. +if [ "$WEB_RUNNING" -eq 1 ]; then + info "Web-Oberflaeche laeuft - halte sie fuer die Aktualisierung an" + if systemctl stop pvesnap-web.service; then + info " angehalten, Port ${WEB_PORT} ist frei" + else + warn " liess sich nicht anhalten - bitte pruefen:" + warn " systemctl status pvesnap-web" + fi +fi + +# Bewusst kein "pvesnap-explorer --cleanup" an dieser Stelle: das wuerde auch +# die Einbindungen einer Sitzung loesen, die jemand gerade in einem anderen +# Terminal offen hat. Wer nach einem Absturz aufraeumen will, ruft es selbst. + # --- Programm --------------------------------------------------------- info "Installiere Programm nach ${LIB_DIR}" rm -rf "${LIB_DIR}/pvesnap"