Add ssh auto suspend systemd service für user chch by ssh
Find a file
2026-06-18 23:37:18 +02:00
install.sh Add ssh auto suspend systemd service 2026-06-18 23:37:18 +02:00
README.md Add ssh auto suspend systemd service 2026-06-18 23:37:18 +02:00
ssh-auto-suspend Add ssh auto suspend systemd service 2026-06-18 23:37:18 +02:00
ssh-auto-suspend.service Add ssh auto suspend systemd service 2026-06-18 23:37:18 +02:00

SSH Auto Suspend

Dieses kleine systemd-Projekt haelt einen Linux-Rechner wach, solange mindestens eine SSH-Sitzung aktiv ist. Sobald die letzte SSH-Verbindung getrennt wurde, wartet das Script eine einstellbare Zeit und versetzt den Rechner danach in Standby.

Wenn sich waehrend der Wartezeit wieder jemand per SSH verbindet, wird der Standby abgebrochen.

Dateien

  • ssh-auto-suspend: Ueberwachungs-Script
  • ssh-auto-suspend.service: systemd-Dienst
  • install.sh: kopiert die Dateien an die richtigen Stellen und aktiviert den Dienst

Verzoegerung anpassen

Die Standby-Verzoegerung stellst du direkt im Script ein:

SUSPEND_DELAY_SECONDS="${SUSPEND_DELAY_SECONDS:-60}"

Beispiele:

60    # 1 Minute
300   # 5 Minuten
900   # 15 Minuten
1800  # 30 Minuten

Alternativ kannst du spaeter auch in der systemd-Unit eine Environment-Zeile setzen:

Environment=SUSPEND_DELAY_SECONDS=300

Installation

Auf dem Linux-Rechner im Projektordner ausfuehren:

chmod +x install.sh
sudo ./install.sh

Danach laeuft der Dienst automatisch.

Status pruefen

systemctl status ssh-auto-suspend.service
systemd-inhibit --list

Waehrend eine SSH-Sitzung aktiv ist, sollte bei systemd-inhibit --list ein Eintrag von ssh-auto-suspend auftauchen.

Logs ansehen

journalctl -u ssh-auto-suspend.service -n 100 --no-pager

Dienst stoppen oder deaktivieren

Nur stoppen:

sudo systemctl stop ssh-auto-suspend.service

Dauerhaft deaktivieren:

sudo systemctl disable --now ssh-auto-suspend.service

Alte SSH-Sitzungen aufraeumen

Falls loginctl noch tote SSH-Sitzungen anzeigt, kannst du gezielt alle SSH-Sitzungen des Users chch beenden:

for sid in $(loginctl list-sessions --no-legend | awk '$3 == "chch" {print $1}'); do
  remote=$(loginctl show-session "$sid" -p Remote --value)
  service=$(loginctl show-session "$sid" -p Service --value)

  if [ "$remote" = "yes" ] && { [ "$service" = "sshd" ] || [ "$service" = "ssh" ]; }; then
    echo "Kille SSH-Session $sid von chch"
    sudo loginctl terminate-session "$sid"
  fi
done

Hinweis

Der Rechner geht nicht direkt nach dem Booten in Standby. Standby wird erst ausgeloest, nachdem mindestens einmal eine SSH-Sitzung aktiv war und danach die letzte SSH-Sitzung beendet wurde.