Automatischer Shutdown für Linux Server
So ein Server zu hause ist praktisch. Er ermöglicht den Austausch von Dateien, automatische Backups, viel Plattenplatz an einem zentralen Ort und je Anforderungen der Benutzer auch weitere Dienste.
Allerdings hat ein solcher Server, gerade wenn er zu Hause steht, oftmals eine Einsatzdauer von maximal 4-8 Stunden am Tag. Aus Bequemlichkeit laufen die meisten Home Server dennoch 24 Stunden täglich durch. Im Leerlauf verbraten diese Rechner dann zwischen 30 und 300 Watt für nichts. Rechnet man diese Leistung auf einen Monat oder gar ein Jahr hoch stellt man fest, daß man für das Geld lieber etwas anderes getan hätte. Bei einem Leerlauf von 16 Stunden und 100 Watt Leistung kommt man auf etwa 100 Euro Stromkosten im Jahr - für nichts.
Deshalb habe ich ein kleines Script geschrieben, welches einen Linux Server automatisch herunterfährt, wenn keine anderen Rechner im Netz mehr online sind. Denn spätestens wenn kein Rechner mehr online ist, wird der Server nicht mehr benötigt und kann abgeschaltet werden.
Installation
folgendes Script entweder von hier downloaden oder abtippen und unter /usr/local/bin/powersaver.sh speichern (copy+paste tut's natürlich auch):
#!/bin/sh
#
# (cc:by-sa) 2007 Marco Gabriel, http://www.marcogabriel.com/
#
# Powersaver.sh
###
# CONFIG
###
# Filename of the statusfile
STATUSFILE="/tmp/powersaver-status"
# which ip range should be checked?
# this example looks in "192.168.1.10 to 192.168.1.30"
# and "192.168.178.10 to 192.168.178.30"
RANGE="192.168.1,178.10-30"
# how many clients are always on (other servers, routers, etc)
MINCLIENTS=0
# shutdown after how many retries?
RETRIES=2
###
# END CONFIG
###
NUMCLIENTS=`nmap -sP $RANGE -oG - | grep "^Host" | wc -l`
if [ $NUMCLIENTS -le $MINCLIENTS ]; then
if [ ! -f "$STATUSFILE" ]; then
echo "COUNT=$RETRIES" > $STATUSFILE
fi
. $STATUSFILE
if [ $COUNT -le $MINCLIENTS ]; then
echo "Shutdown, my dear..."
shutdown -h now;
else
let COUNT=$COUNT-1
echo "COUNT=$COUNT" > $STATUSFILE
fi;
else
if [ -f "$STATUSFILE" ]; then
rm $STATUSFILE
fi
fi
Nachdem das Script unter /usr/local/bin/powersaver.sh gespeichert wurde muss es gegebenenfalls noch ausführbar gemacht werden:
chmod +x /usr/local/bin/powersaver.sh
Als nächstes muss das Script natürlich regelmässig ausgeführt werden. Hierfür bietet sich ein Cronjob an, der das Script alle 10 Minuten startet. Also erweitern wir /etc/crontab um einen Eintrag, der das Script regelmäßig aufruft:
root@server:~# crontab -e
In der Datei ergänzt man folgenden Eintrag:
*/10 * * * * /usr/local/bin/powersaver.sh
Nun wird das Script alle 10 Minuten aufgerufen und überprüft, wieviele Rechner online sind. Im oben konfigurierten Standard muss also 3 mal nacheinander (RETRIES=2) kein Rechner (MINCLIENTS=0) mehr gefunden werden, dann wird der automatische Shutdown eingeleitet.
Sollte der Rechner vorher Aufgaben ausgeführt haben, die Nachts automatisch durch cron gestartet wurden, kann man statt cron künftig auch anacron einsetzen. Anacron wurde als cron-Ersatz speziell für Server geschrieben, die eben nicht immer eingeschaltet sind.
Wer's bequem haben will, kann den Rechner bei Bedarf auch per Wake-On-Lan einschalten... ![]()
This
work is licensed under a
Creative Commons Attribution-Share Alike 2.0 Germany License.
About this entry
You’re currently reading “Automatischer Shutdown für Linux Server,” an entry on Marco Gabriel
- Posted by:
- Marco Gabriel at
16.06.2007 / 17:16
Last updated 30.07.2010
- Category:
- Tech-O-Rama
Software
Beliebte Einträge
- Python Scripte mit PyInstaller als .exe verteilen (17)
- Notice from China wegen Domainregistrierung (17)
- Durchsichtiger LCD Bildschirm mit Hintergrundbeleuchtung (14)
- Schlechte Bewertungen bei Ebay schneller finden (12)
- Dell Beschwerdemanagement (12)
- Tag Cloud (11)
- Automatischer Shutdown für Linux Server (10)
- Adieu Typo3 - Welcome whatever (10)
- Django Installation (7)
- Das Märchen vom IT-Fachkräftemangel (7)



10 Comments
Jump to comment form | Comments RSS | Trackback specific URI for this entry