Diese kurze Anleitung erklärt, was ein Runlevel ist, wie viele Runlevel es in Linux gibt und wie man den Runlevel in Linux-Betriebssystemen überprüft.
Was ist Runlevel?
Ein Runlevel ist einer der Modi, in denen ein Unix-basiertes Betriebssystem ausgeführt wird. Mit anderen Worten, ein Runlevel ist ein Zustand von init und das ganze System, das definiert, welche Systemdienste in Betrieb sind.
Im Linux-Kernel gibt es 7 Runlevel, beginnend von 0 bis 6. Das System kann jeweils nur in einem Runlevel gebootet werden.
Standardmäßig bootet ein System entweder auf Runlevel 3 oder auf Runlevel 5. Runlevel 3 ist CLI und 5 ist GUI. Der Standard-Runlevel ist in /etc/inittab
angegeben Datei in den meisten Linux-Betriebssystemen.
Mit Runlevel können wir leicht herausfinden, ob X läuft oder das Netzwerk betriebsbereit ist und so weiter.
1. Überprüfen Sie den Runlevel in Linux (SysV init)
Hier ist die Liste der Runlevels in Linux-Distributionen, die mit SysV init
verteilt wurden als Standarddienstmanager.
- 0 - Halt
- 1 - Einzelbenutzer-Textmodus
- 2 - Nicht verwendet (benutzerdefinierbar)
- 3 - Vollständiger Mehrbenutzer-Textmodus
- 4 - Nicht verwendet (benutzerdefinierbar)
- 5 - Vollständiger grafischer Mehrbenutzermodus (mit einem X-basierten Anmeldebildschirm)
- 6 - Neustart
Sehen wir uns nun an, wie man die Runlevel findet.
Um den Runlevel des Systems herauszufinden, öffnen Sie Ihr Terminal und führen Sie den folgenden Befehl aus:
$ runlevel
Beispielausgabe:
N 3
In der obigen Ausgabe der Buchstabe 'N'
zeigt an, dass der Runlevel seit dem Booten des Systems nicht geändert wurde. Und 3
ist der aktuelle Runlevel, d. h. das System befindet sich im CLI-Modus.
In neueren Versionen von init
finden Sie die aktuellen und vorherigen Runlevel-Details mithilfe der Umgebungsvariablen namens RUNLEVEL
und PREVLEVEL
.
Sagen wir zum Beispiel, um den aktuellen Runlevel herauszufinden, müssen Sie Folgendes ausführen:
$ echo $RUNLEVEL
So finden Sie den vorherigen Runlevel:
$ echo $PREVLEVEL
Wenn Sie den RunLevel ändern möchten, bearbeiten Sie /etc/inittab
Datei:
$ sudo vi /etc/inittab
Suchen und bearbeiten Sie den Eintrag initdefault
zum Runlevel Ihrer Wahl. Um beispielsweise den Runlevel auf den grafischen Mehrbenutzermodus (Runlevel 5) einzustellen, ändern Sie ihn wie unten gezeigt.
id:5:initdefault:
Speichern und schließen Sie die Datei. Starten Sie Ihr System neu, um sich bei Ihrem neuen Runlevel anzumelden.
Weitere Einzelheiten zu Runlevels finden Sie in den Manpages.
$ man runlevel
2. Überprüfen Sie den Runlevel in Linux (Systemd)
In neueren Versionen von Linux-Systemen (ab RHEL 7, Ubuntu 16.04 LTS) wurde das Konzept der Runlevel durch systemd
ersetzt Ziele.
Hier ist die Liste von Systemd
Ziele in Linux-Distributionen, die mit Systemd
verteilt wurden als Standarddienstmanager.
- runlevel0.target, poweroff.target - Anhalten
- runlevel1.target, rescue.target – Einzelbenutzer-Textmodus
- runlevel2.target, multi-user.target – Nicht verwendet (vom Benutzer definierbar)
- runlevel3.target, multi-user.target – Vollständiger Mehrbenutzer-Textmodus
- runlevel4.target, multi-user.target – Nicht verwendet (vom Benutzer definierbar)
- runlevel5.target,graphical.target – Vollständiger grafischer Mehrbenutzermodus (mit einem X-basierten Anmeldebildschirm)
- runlevel6.target,reboot.target - Neustart
In Linux-Systemen, die Systemd
verwenden Als Standard-Service-Manager können Sie das aktuelle Ziel mit folgendem Befehl finden:
$ systemctl get-default
Beispielausgabe:
graphical.target
Wie Sie in der obigen Ausgabe sehen, ist mein aktuelles Runlevel (mit anderen Worten Ziel) 5
, das ist der grafische Modus.
Führen Sie Folgendes aus, um alle derzeit geladenen Ziele anzuzeigen:
$ systemctl list-units --type target
Beispielausgabe:
UNIT LOAD ACTIVE SUB DESCRIPTION basic.target loaded active active Basic System bluetooth.target loaded active active Bluetooth cryptsetup.target loaded active active Local Encrypted Volumes getty.target loaded active active Login Prompts graphical.target loaded active active Graphical Interface local-fs-pre.target loaded active active Local File Systems (Pre) local-fs.target loaded active active Local File Systems multi-user.target loaded active active Multi-User System network-online.target loaded active active Network is Online network-pre.target loaded active active Network (Pre) network.target loaded active active Network nfs-client.target loaded active active NFS client services nss-lookup.target loaded active active Host and Network Name Lookups nss-user-lookup.target loaded active active User and Group Name Lookups paths.target loaded active active Paths remote-fs-pre.target loaded active active Remote File Systems (Pre) remote-fs.target loaded active active Remote File Systems rpc_pipefs.target loaded active active rpc_pipefs.target rpcbind.target loaded active active RPC Port Mapper slices.target loaded active active Slices sockets.target loaded active active Sockets sound.target loaded active active Sound Card swap.target loaded active active Swap sysinit.target loaded active active System Initialization timers.target loaded active active Timers veritysetup.target loaded active active Local Verity Integrity Protected Volumes LOAD = Reflects whether the unit definition was properly loaded. ACTIVE = The high-level unit activation state, i.e. generalization of SUB. SUB = The low-level unit activation state, values depend on unit type. 26 loaded units listed. Pass --all to see loaded but inactive units, too. To show all installed unit files use 'systemctl list-unit-files'.
Der obige Befehl zeigt nur die aktiven Ziele an.
Um alle geladenen Ziele (aktiv und inaktiv) anzuzeigen, führen Sie Folgendes aus:
$ systemctl list-units --type target --all
Wenn Sie den RunLevel auf etwas anderes ändern möchten, zum Beispiel runlevel3.target
, stellen Sie es wie unten gezeigt ein:
$ sudo systemctl set-default runlevel3.target
Führen Sie den folgenden Befehl aus, um nur in der aktuellen Sitzung zu einer anderen Zieleinheit zu wechseln:
$ sudo systemctl isolate runlevel3.target
Weitere Einzelheiten finden Sie unter Systemd
Handbuchseiten.
$ man systemd
Überprüfen Sie den Linux-Runlevel mit dem Befehl „who“
Wie einer der Leser im Kommentarbereich unten vorgeschlagen hat, können wir den Runlevel auch mit who
finden Befehl wie unten:
$ who -r
Beispielausgabe:
run-level 5 2021-06-09 10:21
Hoffe das hilft.
Verwandte Lektüre:
- Auflisten von Startdiensten beim Booten in Linux