ubuntuusers.de

ubuntuusers.deWikiHerunterfahren

Herunterfahren

./shutdown_logo.png Ein PC ist schnell eingeschaltet. Das Abschalten dagegen kann komplexer sein: Soll es zeitgesteuert sein? Und wie erlaubt man einem Nutzer das Ausschalten, wenn kein Displaymanager diese Funktion global bereitstellt? Im Terminal geht es mit welchem Befehl? Dieser Artikel klärt diese Fragen.

Zeitgesteuert herunterfahren

GShutdown

Hinweis:

Ab Ubuntu 11.10 funktioniert GShutdown nur noch eingeschränkt. Es wurde für die Zusammenarbeit mit den Displaymanagern GDM und KDM konzipiert, die aber inzwischen durch LightDM abgelöst wurden. Das Herunterfahren scheitert daher, stattdessen wird der jeweilige Benutzer nur abgemeldet.

./gshutdown.png
GShutdown

GShutdown {en} ist eine kleine Anwendung, mit der es möglich ist, komfortabel einen Termin zu definieren, an dem der Rechner automatisch heruntergefahren werden soll. GShutdown bietet die Optionen:

  • Schalte den Rechner aus

  • Rechner neustarten

  • Diese Sitzung beenden

Sollte man einen der oben genannten Displaymanager verwenden, so kann man entweder das Paket gshutdown aus den offiziellen Paketquellen verwenden oder von der Downloadseite {en} {dl} Fremdpakete im .deb-Format von GShutdown herunterladen und manuell installieren [3]. Nach der Installation kann man das Programm über "Zubehör -> GShutdown" starten.

Hinweis!

Fremdpakete können das System gefährden.

KShutDown

./kshutdown.png
KShutDown

KShutDown {en} ist ein Programm für das automatische Herunterfahren des Systems aus KDE heraus. Das Programm kann jedoch deutlich mehr als nur den Rechner herunterfahren. So kann das Programm z.B. die Internetverbindung zu einem bestimmten Zeitpunkt beenden, die Wiedergabe verschiedener Audio-Player stoppen usw.

Das Programm kann direkt aus den Paketquellen von Ubuntu über das folgende Paket installiert werden:

  • kshutdown (universe )

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install kshutdown 

sudo aptitude install kshutdown 

Nach der Installation kann man das Programm unter "K-Menü -> Dienstprogramme -> KShutDown (System Shut Down Utility)" starten.

qshutdown

./qshutdown.png
qshutdown

qshutdown ist ein Programm, dass den PC zeitgesteuert herunterfahren, neu starten, in den Standby und in den Ruhezustand versetzen kann. Man kann sowohl eine Uhrzeit als auch eine Anzahl von Minuten angeben, zu der die entsprechende Aktion ausgeführt werden soll. Wenn nur noch wenig Zeit bis zur gewünschten Aktion verbleibt, warnt einen das Programm durch ein 3-maliges Wiedererscheinen, wobei diese Option auch abschaltbar ist. Mit Hilfe dieses Programms kann man stets die verbleibende Zeit im Auge behalten. Es soll einem ermöglichen ohne Terminal auszukommen und vermeidet dabei die wall-Meldung, die beim shutdown-Befehl im Terminal manche Prozesse zu stören vermag. Außerdem benötigt qshutdown in der Regel keine Root-Rechte.

Herunterfahren per Terminal

Auch aus dem Terminal [4] kann man einen Linux-Rechner (zeitgesteuert) herunterfahren lassen. Hierfür ist im Allgemeinen der Befehl "shutdown" nötig.

shutdown

Shutdown muss man verschiedene Optionen mitgeben. Üblich ist die Option -h für den Shutdown und now, damit der Rechner sofort herunterfährt. Alternativ kann man eine Zeitdauer angeben, nach der der Shutdown erfolgen soll. Möchte man sicher gehen, dass der Rechner danach abgeschaltet wird, sollte man die Option -P verwenden (-h überlässt die Wahl dem System).

sudo shutdown -h now     # Fährt das System sofort herunter
sudo shutdown -h +60     # Fährt das System in 60 Minuten herunter
sudo shutdown -h 20:30   # Fährt das System um 20:30h herunter
sudo shutdown -P now     # Fährt das System sofort herunter und veranlasst die Abschaltung des Rechners 

Wenn man nun den Timer gestartet hat, es sich aber doch anders überlegt und den Computer weiterhin benutzen möchte, so muss man den Shutdown des Rechners mittels

sudo shutdown -c 

abbrechen.

halt / reboot

Alternativ kann man auch die Befehle

sudo halt -p 

zum sofortigen Shutdown und

sudo reboot 

für einen Neustart nutzen.

Herunterfahren mit Benutzerrechten

Terminal

Die "sudoers" Methode

Möchte man den Befehl shutdown in einem Skript benutzen oder anderen Benutzern ermöglichen (die dazu keine Root-Rechte auf dem Rechner bekommen sollen), den Rechner per shutdown herunterzufahren, so ist dies problematisch. Der Befehl braucht Root-Rechte. Man kann jedoch einzelnen Benutzern ermöglichen, shutdown auszuführen. ohne ein Passwort eingeben zu müssen. Hierzu muss sudo über den Befehl [4]

sudo visudo 

konfiguriert und die Zeilen

# User alias specification
User_Alias ABSCHALTER = otto, anna, berta

# Cmnd alias specification
Cmnd_Alias DOWN = /sbin/shutdown, /sbin/halt, /sbin/reboot

# User privilege specification
ABSCHALTER ALL = NOPASSWD: DOWN

(am Ende der Datei) eingefügt werden. In diesem Beispiel würden die drei Benutzer otto, anna, berta den Rechner über z.B.

sudo shutdown -h now 

herunterfahren können, ohne dass sie nach einem Passwort gefragt werden.

Eine andere einfache Lösung besteht darin, jedem Benutzer das Recht zum Ausführen des shutdown-Befehls einzuräumen, in man das entsprechende SUID-Bit, wie in chmod beschrieben, setzt:

sudo chmod +s /sbin/shutdown 

Dieses Vorgehen ist meist nur bei Desktop-Systemen mit einem einzigen Benutzer sinnvoll.

Die D-Bus Methode

Um über D-Bus herunterfahren zu können gibt es verschiedene Schnittstellen, die angesprochen werden können (siehe z.B. nachfolgend unter Gnome etc.). Über ConsoleKit gibt es eine Methode, die prinzipiell bei allen Systemen, die das Paket consolekit installiert haben, funktioniert (sei dies Debian, oder Ubuntu mit KDE, XFCE, Gnome etc.). Es folgt keinerlei Abfrage. Es wird direkt heruntergefahren.

dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Stop      #zum Herunterfahren
dbus-send --system --print-reply --dest=org.freedesktop.ConsoleKit /org/freedesktop/ConsoleKit/Manager org.freedesktop.ConsoleKit.Manager.Restart   #zum Neustarten 

GNOME

SessionManager über D-Bus (ab Ubuntu 10.04)

Hier kann der Gnome-Session-Manager eingesetzt werden, der direkt über D-Bus angesprochen werden kann:

dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestReboot   # Befehl zum direkten Neustart
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.RequestShutdown # Befehl zum direkten Herunterfahren
dbus-send --session --type=method_call --print-reply --dest=org.gnome.SessionManager /org/gnome/SessionManager org.gnome.SessionManager.Logout uint32:1 # Befehl zum direkten Logout 

GNOME 3 (ab Ubuntu 11.10)

gnome-session-quit --power-off                  # Zeigt den Dialog zum Ausschalten, Neustarten usw. an.
gnome-session-quit --logout                     # Zeigt den Dialog zum Ausloggen oder Benutzerwechsel an.
gnome-session-quit --logout --no-prompt         # Loggt jetzt den Benutzer direkt aus (sofern dies nicht von einem Programm verhindert wird). 

Siehe auch gnome-session-quit --help-all.

Ubuntu 10.10 und Ubuntu 11.04

Der Befehl für den Dialog zum Ausloggen wurde an den zum Ausschalten angepasst:

gnome-session-save --shutdown-dialog --gui      # Zeigt den Dialog zum Ausschalten, Neustarten usw. an.
gnome-session-save --logout-dialog --gui        # Zeigt den Dialog zum Ausloggen oder Benutzerwechsel an.
gnome-session-save --logout --gui               # Loggt jetzt den Benutzer direkt aus (sofern dies nicht von einem Programm verhindert wird). 

Weiteres erfährt man über den Befehl gnome-session-save --help

Ubuntu 10.04

Seit Ubuntu 9.10 gibt es nur noch die Möglichkeit, den Rechner über die GNOME-Session herunterzufahren:

gnome-session-save --logout --gui               # Zeigt den Dialog zum Ausloggen oder Benutzerwechsel an.
gnome-session-save --shutdown-dialog --gui      # Zeigt den Dialog zum Ausschalten, Neustarten usw. an. 

Ubuntu 8.04

Jeder Benutzer kann den Rechner mit folgendem Befehl [4] herunterfahren:

gnome-power-cmd.sh shutdown 

Wenn man GDM als Displaymanager nutzt, kann man den Computer auch mittels

gdm-control --shutdown 

herunterfahren. Man sollte allerdings beachten, dass der jeweilige Fenstermanager ebenfalls beendet werden muss. Bei Openbox genügt zum Beispiel ein

gdm-control --shutdown && openbox --exit 

um den Computer herunterzufahren.

Xfce

Wenn man Xfce ohne GDM startet, wird beim Klicken auf "Herunterfahren" oder "Neustart" das Passwort abgefragt. Dies lässt sich wie folgt umgehen:

Die Datei /etc/sudoers mit [4]

sudo visudo 

bearbeiten. Folgender Text muss hinzugefügt werden, wobei BENUTZERNAME durch den eigenen Benutzernamen ersetzt wird und genauso der Hostname:

BENUTZERNAME HOSTNAME=NOPASSWD:/usr/sbin/xfsm-shutdown-helper

Xubuntu 13.10

In der Konfiguration nach einer Neuinstallation zeigt der Rechner den Dialog zum Beenden der Session fährt aber sofort herunter, wenn der Power-Knopf gedrückt wird. Lösung: in der /etc/systemd/logind.conf braucht man diese Zeile:

HandlePowerKey=ignore

Die Einstellung wird erst nach dem nächsten Boot wirksam.

KDE

Kubuntu kann man u.a. über den Session-Manager via D-Bus herunterfahren.

dbus-send --print-reply --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:0 int32:2 int32:2  # D-Bus-Befehl zum sofortigen Abschalten
dbus-send --print-reply --dest=org.kde.ksmserver /KSMServer org.kde.KSMServerInterface.logout int32:1 int32:1 int32:1  # D-Bus-Befehl um jetzt einen Neustart zu versuchen 

Die drei Parameter am Ende haben folgende Funktionen:

  • Parameter 1: Bestätigungsabfrage (0 = nein, 1 = ja)

  • Parameter 2: Modus (0 = einplanen, 1 = jetzt versuchen, 2 = erzwingen)

  • Parameter 3: Methode (0 = logout, 1 = neustarten, 2 = herunterfahren)

Weitere Infos findet man {en}hier.

Server mittels ACPI herunterfahren

Für kleine Heimserver ist es möglicherweise interessant, diese auch über den Einschalter am PC-Gehäuse herunterzufahren. Das erspart eventuell ungeübten Benutzern, am Server den Monitor einzuschalten, sich anzumelden und dann den Befehl sudo halt zum Herunterfahren einzugeben. Durch Installation des Paketes acpid können auch Rechner ohne grafische Oberfläche heruntergefahren werden. Bei Rechnern mit grafischer Oberfläche ist das Paket normalerweise dabei, ansonsten muss es installiert werden, und kann dann sofort verwendet werden.

  • acpid

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install acpid 

sudo aptitude install acpid 

Achtung!

Wichtig ist noch, den Schalter nicht länger als 5 Sekunden gedrückt zu halten. Ansonsten schaltet sich das Netzteil hart ab und kann so einen Datenverlust verursachen. Gegen unabsichtliches Drücken des Schalters schützt ein eigener Serverschrank oder eine ähnliche Maßnahme.

Ungewolltes Abschalten vermeiden

Arbeitet man in einem Netzwerk mit mehreren Rechnern, die man per SSH steuert, so kann es leicht zu Verwechselungen kommen, so dass man aus Versehen den falschen Rechner herunterfährt. Dieses kann man mit dem Paket

  • molly-guard (universe)

Wiki/Vorlagen/Installbutton/button.png mit apturl

Paketliste zum Kopieren:

sudo apt-get install molly-guard 

sudo aptitude install molly-guard 

vermeiden. Hat man molly-guard auf einem Rechner installiert [1], auf dem man sich per SSH eingeloggt hat, und fährt den Rechner herunter, so wird man nach dem Hostnamen des Rechners gefragt. Erst wenn man diesen korrekt eingegeben hat, wird der Rechner tatsächlich heruntergefahren.

sudo shutdown -h now 
W: molly-guard: SSH session detected!
Please type in hostname of the machine to shutdown:

Ist man lokal angemeldet, so beeinflusst molly-guard das Herunterfahren nicht.

Ist man per SSH eigeloggt, arbeitet jedoch mit SCREEN in einer virtuellen Konsolensitzung, so wird beim Herunterfahren nicht nach dem Rechnernamen gefragt. Möchte man trotzdem gefragt werden, kann man ab Ubuntu "Intrepid Ibex" 8.10 in der Datei /etc/molly-guard/rc folgenden Wert eintragen bzw. auskommentieren.

ALWAYS_QUERY_HOSTNAME=true

Nach dieser Änderung wird bei jedem Herunterfahren nach dem Hostnamen gefragt, auch in einer lokalen Sitzung.

Problembehebung

Rechner schaltet sich nicht ab

Es kommt vor, dass sich der Rechner nach dem Herunterfahren nicht abschaltet. Man bekommt dann die Meldung, dass man den Rechner nun abschalten kann. Erst wenn man den Taster am Rechner betätigt, schaltet sich der Rechner ab. Um dieses zu lösen, kann man verschiedene Dinge probieren.

ACPI erzwingen

Es kommt vor, dass Ubuntu nicht erkennt, dass der Rechner ACPI-Funktionen bietet. Dann kann man Ubuntu dazu zwingen, ACPI zu nutzen.

GRUB 2

Ab Ubuntu 9.10 wird standardmäßig GRUB 2 installiert. Hier bearbeitet man, wie in Grub 2 Konfiguration beschrieben, die Datei /etc/default/grub, wobei die Zeile

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

um die Option acpi=force ergänzt wird:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi=force"

Nun aktualisiert man die Konfiguration von Grub mittels des Befehls [4]

sudo update-grub 

Nach dem nächsten Neustart schaltet sich der Rechner nun korrekt ab.

GRUB

Bei GRUB fügt man in der Konfigurationsdatei /boot/grub/menu.lst in der Zeile

# defoptions=quiet splash

die Option acpi=force ein [5]. So dass diese Zeile letztendlich so

# defoptions=quiet splash acpi=force

aussieht.

Power-Off über APM

Alternativ kann man Ubuntu anweisen, dass es speziell zum Abschalten des Rechners das veraltete APM nutzen soll. Dieses Verfahren wird heutzutage nicht mehr genutzt, kann aber bei sehr alter Hardware oder ACPI-Problemen eine Lösung sein. Dazu editiert man, wie bei ACPI erzwingen beschrieben, die Konfigurationsdatei von GRUB oder GRUB 2 und fügt apm=power_off ein. Die Schreibweisen power-off und poweroff sind Synonyme, funktionieren also ebenfalls.

Danach muss GRUB 2 noch aktualisiert werden:

sudo update-grub 

Anschließend muss dem APM-Kernelmodul noch mitgeteilt werden, dass es den Rechner abschalten soll. Dazu muss die Datei /etc/modules mit Root-Rechten bearbeitet [5] und die Zeile

apm power_off=1

eingefügt werden. Mit einem Neustart des Systems kann der Erfolg der Maßnahme überprüft werden.

"HDA"(High Definition Audio) abschalten

Laut Berichten aus dem Forum scheint es Probleme mit manchen Intel-Chipsätzen zu geben. Die Kernelmodule snd_hda_intel sowie snd_hda_codec können das ACPI wohl so "durcheinander" bringen, dass der Rechner sich nicht ausschalten kann. Um das Problem zu lösen, muss man ein Skript anlegen, das die Module vor dem Herunterfahren entfernt werden.

Prüfen

Als erstes muss man prüfen, ob das Modul überhaupt verwendet wird:

lsmod | grep snd_hda_intel 

Wird das Modul verwendet, kann man fortfahren.

Skript erstellen

Mit einem Editor mit Root-Rechten [5] erzeugt man das Skript /etc/init.d/intelaudio und träge Folgendes ein.

#!/bin/sh
rmmod -f snd_hda_intel
exit 0

Damit das Skript ausgeführt werden kann, muss man es anschließend mittels

sudo chmod +x /etc/init.d/intelaudio

ausführbar machen.

Beim Herunterfahren ausführen

Experten-Info:

Damit das Skript funktioniert, muss es nach dem Entladen des Soundsystems (ALSA) gestartet werden. Beim Herunterfahren werden die Skripte in /etc/rc0.d/ alphabetisch abgearbeitet. Standardmäßig wird ALSA über das Skript K50alsa-utils entladen. Darum sollte der Link S51intelaudio heißen. (K steht für Kill und S für Start)

Jetzt muss das System erfahren, dass das Skript beim Herunterfahren ausgeführt werden soll. Hierfür gibt es das Programm update-rc.d, das die Skripte aus /etc/init.d/ in die jeweiligen Runlevel-Verzeichnisse (/etc/rc0.d/ bis /etc/rcS.d/) verlinkt und ihnen einen Platz in der Ausführungsreihenfolge zuweist. Mit

sudo update-rc.d intelaudio start 51 0 6 .    # Der Punkt am Ende ist wichtig! 

wird das Skript intelaudio auf Platz 51 in den Runlevels 0 und 6 (Shutdown und Reboot) gestartet.

Diese Revision wurde am 9. Mai 2014 20:38 von hakaishi erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: GNOME, System, KDE, Übersicht, Server