Ein Runlevel ist ein vordefinierter Betriebszustand eines UNIX- oder Linux-Systems, der bestimmt, welche Dienste und Prozesse nach dem Booten verfügbar sind.

Was ist ein Runlevel?
Ein Runlevel ist ein Konzept in UNIX- und Linux -Betriebssystemen , das einen bestimmten Systemzustand definiert, indem es festlegt, welche Prozesse, Dienste und Systemressourcen aktiv sind. Es dient als Rahmen für die Steuerung des Systemstarts und -stopps und ermöglicht Administratoren die Verwaltung der Umgebung gemäß den betrieblichen Anforderungen. Jeder Runlevel entspricht einem bestimmten Modus, wie z. B. Systemwartung, textbasierter Mehrbenutzerbetrieb oder vollständiger Zugriff auf die grafische Benutzeroberfläche.
Beim Systemstart wird ein in der Konfiguration definierter Standard-Runlevel aktiviert. Der Init-Prozess stellt sicher, dass die richtigen Dienste basierend auf diesem Level gestartet oder gestoppt werden. Durch Ändern des Runlevels können Administratoren das System schnell an verschiedene Aufgaben anpassen, z. B. an die Fehlerbehebung im Einzelbenutzermodus, den Betrieb ohne Netzwerk aus Sicherheitsgründen oder die Aktivierung vollständig vernetzter und grafischer Dienste für den regulären Gebrauch. Dieser Mechanismus bietet eine standardisierte und effiziente Möglichkeit, das Systemverhalten zu verwalten, ohne dass für jeden einzelnen Dienst ein manueller Eingriff erforderlich ist.
Verschiedene Linux-Runlevel
Hier ist eine strukturierte Tabelle der traditionellen Linux SysV-Runlevel und ihrer Zwecke:
| Runlevel | Beschreibung | Typischer Anwendungsfall |
| 0 | Halt (Herunterfahren) | Schaltet das System sicher aus. |
| 1 | Einzelbenutzermodus | Wartungs- oder Notbetrieb mit Root-Zugriff nur, kein Networking. |
| 2 | Mehrbenutzermodus ohne Netzwerk | Ermöglicht die Anmeldung mehrerer Benutzer, deaktiviert jedoch Netzwerkdienste (variiert je nach Distribution). |
| 3 | Vollständiger Mehrbenutzermodus mit Netzwerk | Standardmäßiger textbasierter, nicht grafischer Modus mit allen aktivierten Diensten und Netzwerken. |
| 4 | Undefiniert / benutzerdefinierbar | Wird selten verwendet; für benutzerdefinierte Konfiguration verfügbar. |
| 5 | Mehrbenutzermodus mit Netzwerk und GUI | Startet in eine grafische Desktopumgebung mit vollständiger Netzwerkverbindung. |
| 6 | rebooten | Startet das System sicher neu. |
Wofür wird Runlevel verwendet?
Runlevels dienen der Steuerung des Betriebszustands eines Linux- oder UNIX-Systems, indem sie festlegen, welche Dienste, Prozesse und Systemressourcen zu einem bestimmten Zeitpunkt aktiv sein sollen. Sie ermöglichen Administratoren die Kontrolle über das Systemverhalten beim Starten, Herunterfahren oder beim Wechsel zwischen verschiedenen Betriebsmodi.
Beispielsweise kann ein System zur Fehlerbehebung in den Einzelbenutzermodus versetzt werden, für normale server Operationen oder das Booten in eine grafische Oberfläche für den Desktop. Durch das Festlegen oder Ändern des Runlevels können Administratoren schnell Dienstgruppen aktivieren oder deaktivieren, Systemressourcen sparen, Wartungsaufgaben durchführen oder sicherstellen, dass der Rechner in der für seine Funktion am besten geeigneten Konfiguration läuft. Dieser strukturierte Ansatz trägt dazu bei, Konsistenz, Sicherheit und Effizienz in verschiedenen Umgebungen zu gewährleisten.
Wie überprüfe ich den Runlevel?
Sie können den aktuellen Runlevel eines Linux-Systems mithilfe von Befehlen überprüfen, die den Betriebszustand des Systems ausgeben. Auf herkömmlichen SysVinit- Systemen zeigt der Befehl `runlevel` den vorherigen und den aktuellen Runlevel an, während der Befehl `who -r` den aktuellen Runlevel detaillierter darstellt.
Auf modernen, auf systemd basierenden Distributionen, die Runlevel durch Targets ersetzen , lautet der entsprechende Befehl `systemctl get-default`, um das Standard-Target anzuzeigen, und `systemctl isolate <Target>`, um zu einem anderen zu wechseln. Zusätzlich liefert `systemctl list-units --type=target` Informationen über aktive Targets, die Runleveln wie `multi-user.target` oder `graphical.target` zugeordnet sind.
Wie ändere ich den Runlevel in Linux?

Die Änderung des Runlevels in Linux hängt davon ab, ob das System das ältere SysVinit- Framework oder das moderne systemd- Init-System verwendet.
SysVinit-basierte Systeme
Der Runlevel kann temporär mit dem Befehl `init` oder `telinit` gefolgt von der Runlevelnummer geändert werden. Beispielsweise schaltet `init 3` das System in den Mehrbenutzermodus ohne grafische Oberfläche, während `init 5` die grafische Desktop-Umgebung startet. Um die Änderung dauerhaft zu speichern, muss der Standard-Runlevel in der Datei `/etc/inittab` angepasst werden. Dort wird festgelegt, in welchem Runlevel das System standardmäßig startet .
Systemd-basierte Systeme
Runlevels werden durch Ziele ersetzt . Um vorübergehend zu einem anderen Ziel zu wechseln, verwenden Sie `systemctl isolate <Ziel>`, z. B. `systemctl isolate multi-user.target` für den Textmodus oder `systemctl isolate graphical.target` für die grafische Benutzeroberfläche. Um das Standardziel für zukünftige Systemstarts zu ändern, führen Sie `systemctl set-default <Ziel>` aus. Dadurch wird der symbolische Link für das Standard-Systemziel aktualisiert.
Warum ist das Runlevel wichtig?
Hier ist eine Liste von Gründen, warum Runlevel in Linux- und Unix-Systemen wichtig sind:
- Systemkontrolle. Runlevel definieren, welche Dienste und Prozesse ausgeführt werden sollen, und geben Administratoren eine präzise Kontrolle über den Betriebszustand des Systems.
- FlexibilitätSie ermöglichen einen schnellen Wechsel zwischen verschiedenen Modi, beispielsweise dem Einzelbenutzermodus für die Wartung oder dem grafischen Modus für die Desktop-Nutzung.
- Problemlösung. Administratoren können in minimale Umgebungen (wie Runlevel 1) booten, um Konfigurationsfehler zu beheben oder Fehler zu beheben.
- Resourcenmanagement. Durch die Deaktivierung unnötiger Dienste in bestimmten Runlevels kann das System CPU, Erinnerung, und Macht.
- SicherheitNiedrigere Runlevel können den Zugriff auf Benutzer und Dienste einschränken, was nützlich ist, wenn das System während Wartungsarbeiten oder bei Verdacht auf Kompromittierung isoliert wird.
- KonsistenzSie bieten eine standardisierte Struktur für Systemzustände über verschiedene Unix-ähnliche Systeme hinweg und vereinfachen so die Verwaltung.
- Automation. Scripts und an Runlevels gebundene Konfigurationen optimieren das Starten, Herunterfahren und die Übergänge und reduzieren so die manuelle Arbeit.
Runlevel-Probleme
Hier ist eine Übersicht über häufige Runlevel-Probleme und deren Bedeutung:
- Falsch konfigurierter Standard-Runlevel. Wenn der Standard-Runlevel (oder das systemd-Ziel) des Systems falsch eingestellt ist, kann es passieren, dass die Maschine in einen unerwünschten Zustand bootet, wie etwa in den Grafikmodus auf einem server, oder ein nicht vernetzter Modus auf einer Workstation, was zu Ressourcenverschwendung oder eingeschränkter Nutzbarkeit führt.
- Fehler beim Laden kritischer Dienste. Bei einem bestimmten Runlevel Dämonen Es wird erwartet, dass sie automatisch starten. Wenn Konfigurationsfehler den Start verhindern, fehlen dem System möglicherweise Netzwerk-, Anzeige- oder sogar wichtige Anmeldefunktionen, wodurch es teilweise oder vollständig unbrauchbar wird.
- Unfähigkeit, Runlevel zu wechseln. Probleme mit Init-Skripten oder Dienst Abhängigkeiten kann das System daran hindern, den Modus dynamisch zu ändern. Beispielsweise kann der Wechsel von Runlevel 3 (textbasierter Mehrbenutzermodus) zu Runlevel 5 (grafischer Modus) fehlschlagen, wenn der Display-Manager falsch konfiguriert ist oder fehlt.
- Boot-Schleifen oder AbstürzeEine falsche oder fehlerhafte Runlevel-Konfiguration kann dazu führen, dass das System wiederholt versucht, inkompatible Dienste zu laden, was zu ständigen Neustarts oder Kern Panik. Dies geschieht häufig, wenn der Standard-Runlevel auf einen Modus verweist, der nicht verfügbar ist Hardware oder Software.
- Inkonsistentes Verhalten über Verteilungen hinweg. Nicht alle Linux-Distributionen Runlevel werden auf die gleiche Weise behandelt. Beispielsweise verwenden einige Runlevel 2 als Standard-Mehrbenutzermodus, während andere Runlevel 3 oder 5 verwenden. Dies kann zu Verwirrung und Fehlkonfigurationen führen, wenn Administratoren an mehreren Systemen arbeiten.
- Übergang zu systemd-ZielenModerne Linux-Systeme haben Runlevels weitgehend durch systemd-Ziele ersetzt. Obwohl sie einem ähnlichen Zweck dienen, können die Unterschiede in Terminologie und Befehlen für Administratoren, die an SysVinit gewöhnt sind, Probleme verursachen und zu Fehlern bei der Dienstverwaltung und Systemwiederherstellung führen.
Was ist der Unterschied zwischen Ziel und Runlevel?
Hier ist eine Vergleichstabelle, die den Unterschied zwischen Runlevels und Targets in Linux erklärt:
| Aspekt | Runlevel (SysVinit) | Ziel (systemd) |
| Definition | Ein vordefinierter numerischer Status (0–6), der bestimmt, welche Dienste und Prozesse gestartet werden. | Eine benannte Einheit in systemd, die Dienste gruppiert und den Systemstatus definiert. |
| Format | Identifiziert durch Zahlen (z. B. Runlevel 3 = Mehrbenutzer ohne GUI). | Identifiziert durch beschreibende Namen (z. B. multi-user.target, graphical.target). |
| Konfigurationsdatei | Gesteuert über /etc/inittab. | Verwaltet mit Unit-Dateien unter /etc/systemd/system/ und /lib/systemd/system/. |
| Flexibilität | Feste Zustände mit eingeschränkter Anpassung (meistens 7 Runlevel). | Höchst flexible, ermöglicht benutzerdefinierte Ziele und Abhängigkeiten. |
| Standardzustand | In /etc/inittab festlegen. | Mit systemctl set-default festlegen . |
| Befehl ändern | Vorübergehend geändert mit init oder Telinit . | Vorübergehend geändert mit systemctl isolate . |
| Erweiterbarkeit | Nicht leicht erweiterbar; an das alte SysVinit gebunden. | Vollständig erweiterbar; Administratoren können neue Ziele für spezifische Anforderungen erstellen. |
| Aktueller Statuscheck | Überprüft mit Runlevel oder who -r. | Überprüft mit systemctl get-default oder systemctl list-units --type=target. |