Grüß euch,
Ich dachte ich stelle hier meine Lösung für einen cleanen Rebooten und Shutdown vor, wenn der Raspberry Pi als Docker-Server genutzt wird.
Diese Anleitung soll vor allem Leuten wie mir dienen, die wenig Ahnung vom Linux Betriebssystem haben und auf Nummer Sicher gehen wollen wenn sie ihren Raspberry Pi neue starten oder ausschalten möchten.
Was macht das Skript:
- Fragt ob das System neu gestartet (reboot) oder ausgeschalten (shutdown) werden soll. Bei Falscheingabe bricht das Skript ab
- Stoppt alle Container und gibt in einem 3 Sekunden Rhythmus die noch laufenden Container (ID) aus
- Wenn alle Container gestoppt wurden erscheint die Mitteilung "Alle Container wurden erfolgreich gestoppt."
- Je nach Eingabe wird der Pi nach 5 Sekunden rebootet oder heruntergefahren
That's it!
Installation:
- Erstellen der Skript Datei für den root-User (Da ich das Skript später über "pi_shutdown" ausführen möchte erstelle ich die Datei dementsprechend. Ihr könnt natürlich jeden x-beliebigen Namen wählen):
sudo nano /usr/local/bin/pi_shutdown.sh Skript einfügen und speichern
Bash
Display More#!/bin/bash # Benutzer fragen, ob das System neu gestartet oder heruntergefahren werden soll echo "Möchten Sie das System neustarten oder herunterfahren? (reboot/shutdown)" read action if [[ "$action" != "reboot" && "$action" != "shutdown" ]]; then echo "Ungültige Eingabe. Skript wird beendet." exit 1 fi # Alle laufenden Docker-Container stoppen docker stop $(docker ps -a -q) # Warte und überprüfe regelmäßig, ob noch Container laufen while [[ -n "$(docker ps -q)" ]]; do echo "Noch laufende Container: $(docker ps -q | wc -l)" sleep 3 done echo "Alle Container wurden erfolgreich gestoppt." # System herunterfahren oder neustarten if [[ "$action" == "reboot" ]]; then echo "System wird in 5 Sekunden neu gestartet." sleep 5 shutdown -r now else echo "System wird in 5 Sekunden heruntergefahren." sleep 5 shutdown -h now fi
- Skript für den root-User ausführbar machen
sudo chmod -v 750 /usr/local/bin/pi_shutdown.sh Überprüfen ob das Skript ausführbar ist:
ls -l /usr/local/bin/pi_shutdown.sh
Ihr solltet anschließend folgende Ausgabe bekommen:
Skript ausführen:
Das Skript lässt sich nun mit sudo pi_shutdown.sh ausführen.
Noch ein paar Worte zum Skript:
- Nutzen des Skriptes auf eigene Gefahr (ich bin leider kein Linux Profi somit kann ich Fehler welche durch das Ausführen des Skriptes entstehen könnten nicht abschätzen)
- Vergesst nicht wenn ihr den Pi neu startet, dass nicht alle Container automatisch wieder neu gestartet werden. Dies hängt mit den gesetzten Startbedingungen der Docker Container restart: none, on failure, always oder unless stopped zusammen.
Ich hoffe, dass das Skript für den Einen oder Anderen nützlich sein könnte.
Sollte es konstruktives Feedback geben bin ich gerne dafür offen.
Beste Grüße
Fox-Jet