Linux Runlevel überprüfen und festlegen

()

Runlevel heute auf systemd implementiert, waren zuvor noch die meisten Linux-Distributionen mit dem Init-System, dem Sys-V Stil ausgestattet. Mit Sys-V wurden sieben verschiedene Runlevels verwendet, um zu bestimmen, welche Prozesse auf dem System gestartet werden. Der Runlevel 3 war zum Beispiel reserviert, um normalerweise die Befehlszeile und die zugehörigen Programme zu starten, während Runlevel 5 eine GUI und alle dafür erforderlichen Prozesse startete. Die Ergebnisse können je nach Distribution variieren.

Heutzutage hat die überwiegende Mehrheit der Linux-Distributionen systemd als Init-System übernommen. Einige Distributionen verwenden noch immer Sys-V, wo die Implementierung von Runlevels wie oben beschrieben noch existiert. Bei systemd-Systemen ist das Konzept der Runlevel noch am Leben, es wurden in systemd-„Ziele“ umgewandelt.

Auf einigen Systemen existieren noch Reste von Sys-V, auf denen Befehle wie runlevel noch zu finden sind. Einige moderne systemd-Distributionen haben diese Unterstützung vollständig ausgerottet. In diesem Tutorial zeigen wir, wie man den aktuellen Runlevel unter Linux überprüft.

Linux Runlevel

Linux Runlevel überprüfen

Nachfolgend zwei Befehle um den aktuellen Runlevel zu ermitteln.

$ runlevel
N 5
$ who -r
  run-level 5  2022-11-07 14:52

Wie zu sehen ist hier der Runlevel 5 gestartet. Alternativ kann der Befehl who -r ausgeführt werden. Den Befehl runlevel gibt es nur auf einigen systemd-Distributionen, sollte aber auf jedem Sys-V-System gehen.

Die verschiedenen Runlevels wurden entsprechenden systemd-Zielen zugeordnet. Mit folgendem Befehl überprüft man die Ziele.

$ ls -l /lib/systemd/system/runlevel*

Nachfolgend die Ausgabe der Runlevels bei einem Linux Mint, was auf Ubuntu/Debian basiert.

$ lrwxrwxrwx 1 root root   15 Aug 31 17:27 /lib/systemd/system/runlevel0.target -> poweroff.target
lrwxrwxrwx 1 root root   13 Aug 31 17:27 /lib/systemd/system/runlevel1.target -> rescue.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel2.target -> multi-user.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel3.target -> multi-user.target
lrwxrwxrwx 1 root root   17 Aug 31 17:27 /lib/systemd/system/runlevel4.target -> multi-user.target
lrwxrwxrwx 1 root root   16 Aug 31 17:27 /lib/systemd/system/runlevel5.target -> graphical.target
lrwxrwxrwx 1 root root   13 Aug 31 17:27 /lib/systemd/system/runlevel6.target -> reboot.target

/lib/systemd/system/runlevel1.target.wants:
total 0

/lib/systemd/system/runlevel2.target.wants:
total 0

/lib/systemd/system/runlevel3.target.wants:
total 0

/lib/systemd/system/runlevel4.target.wants:
total 0

/lib/systemd/system/runlevel5.target.wants:
total 0

Welche Linux Runlevels gibt es?

0Halt System herunterfahren
1Single-user mode (Rettung und Sonderverwaltung)
2Multi-user ohne Netzwerkschnittstellen und Daemons starten
3Multi-user mode normaler start mit Netzwerk
4Not Used
5Multi-user wie runlevel 3 + Display manager X11 GUI
6Reboot startet das System neu

Linux systemd runlevel anzeigen

Wie bei Linux Runlevels gibt es standardmäßig 7 systemd-Ziele. Die beiden Hauptziele sind multi-user.target und graphical.target. Die standardmäßigen systemd-Ziele kann man mit dem folgenden Befehl anzeigen.

$ systemctl get-default
graphical.target

Bei diesem Beispiel ist graphical.target gestartet, was sinnvoll ist, da wir eine grafische Desktop-Umgebung benötigen. Bei einem Server wo oft kein GUI ausgeführt wird, ist meist multi-user.target gestartet.

$ systemctl get-default
multi-user.target

Verwende den folgenden Befehl um zu sehen, welche Dienste diesem Ziel zugeordnet sind.

$ systemctl list-dependencies graphic.target
graphic.target

Versuche mit folgenden Befehl zu sehen, welches systemd-Ziel (oder welchen Runlevel) ein Dienst ausführen muss. In diesem Beispiel überprüfen wir den SSH-Dienst.

$ systemctl show -p WantedBy sshd.service
WantedBy=multi-user.target

Runlevel neu festlegen

Der Runlevel festlegen lässt sich mit diesem Befehl mit sudo Privileg.

$ sudo systemctl set-default multi-user.target

Der Befehl wird beim nächsten Systemstart den Mehrbenutzermodus (multi-user.target) starten.

Wie hilfreich war dieser Beitrag?

Klicke auf die Sterne um zu bewerten!

Durchschnittliche Bewertung / 5. Anzahl Bewertungen:

Bisher keine Bewertungen! Sei der Erste, der diesen Beitrag bewertet.

Es tut uns leid, dass der Beitrag für dich nicht hilfreich war!

Lasse uns diesen Beitrag verbessern!

Wie können wir diesen Beitrag verbessern?

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert