GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Linux-Runlevels richtig verstehen

Sie können sich Linux-Runlevel als verschiedene „Modi“ vorstellen, in denen das Betriebssystem ausgeführt wird. Jeder dieser Modi oder Runlevel hat seine eigene Liste von Prozessen und Diensten, die entweder ein- oder ausgeschaltet sind. Ab dem Startzeitpunkt von Linux befindet es sich immer in einem Runlevel.

Dieser Runlevel kann sich ändern, wenn Sie Ihren Computer weiterhin verwenden, je nachdem, auf welche Art von Diensten das Betriebssystem Zugriff benötigt.

Wenn Sie beispielsweise Ihren Linux-Rechner mit einer grafischen Benutzeroberfläche ausführen, ist ein anderer Runlevel erforderlich, als wenn Sie nur die Befehlszeile auf Ihrem System ausführen würden.

Dies liegt daran, dass die grafische Benutzeroberfläche Zugriff auf verschiedene Dienste benötigt, die die Befehlszeile einfach nicht benötigt. Damit das System feststellen kann, welche Dienste ein- (oder ausgeschaltet) werden müssen, ändert es den Runlevel nach Bedarf.

Bedeutung von Linux-Runlevels

Möglicherweise haben Sie Linux jahrelang verwendet, ohne zu bemerken, dass es verschiedene Runlevel gibt. Das liegt daran, dass die meisten Serveradministratoren dies nicht oft konfigurieren müssen.

Linux-Runlevels geben Administratoren jedoch mehr Kontrolle über die von ihnen verwalteten Systeme.

Sie können den Runlevel ändern, in dem sich ein System befindet (was wir später in diesem Artikel sehen werden), ebenso wie die Dienste, die innerhalb der Runlevel ausgeführt werden. Dies ermöglicht uns die vollständige Kontrolle darüber, auf welche Dienste unsere Systeme zu einem bestimmten Zeitpunkt Zugriff haben.

Wie viele Runlevel gibt es in Linux?

Es gibt sieben verschiedene Runlevels in Linux, von null bis sechs. Verschiedene Distributionen können die sieben Runlevel unterschiedlich verwenden, daher ist es nicht sehr einfach, eine endgültige Liste dessen zusammenzustellen, was die Runlevel tun.

Stattdessen müssten Sie überprüfen, wie die Runlevel auf der von Ihnen verwendeten spezifischen Distribution funktionieren. Die folgende Liste stellt größtenteils dar, wie Linux-Distributionen im Allgemeinen Runlevel konfigurieren:

Runlevel 0 fährt das System herunter.

Runlevel 1 ist ein Einzelbenutzermodus, der für Wartungs- oder Verwaltungsaufgaben verwendet wird. Dieser Modus wird möglicherweise auch als Runlevel S bezeichnet (das S steht für Single-User).

Runlevel 2 ist ein Mehrbenutzermodus. Dieser Runlevel verwendet keine Netzwerkdienste.

Runlevel 3 ist ein Mehrbenutzermodus mit Netzwerk. Dies ist der normale Runlevel, an den Sie gewöhnt sind, wenn Sie ein System verwenden, das nicht in eine GUI (grafische Benutzeroberfläche) bootet.

Runlevel 4 ist nicht benutzt. Der Benutzer kann diesen Runlevel für seine eigenen Zwecke anpassen (was wir später in diesem Artikel behandeln werden).

Runlevel 5 ist dasselbe wie Runlevel 3, aber es startet auch einen Display-Manager. Dies ist der Runlevel, den Sie verwenden, wenn Sie ein System verwenden, das in eine GUI bootet.

Runlevel 6 startet das System neu.

Was ist mein aktueller Runlevel?

Sie können Ihren aktuellen Runlevel auf den meisten Distributionen sehen, indem Sie einfach „runlevel“ im Terminal eingeben.

Wenn Sie den Befehl „runlevel“ eingeben, erhalten Sie zwei verschiedene Nummern. Die erste Zahl ist der vorherige Runlevel, auf dem Ihr System ausgeführt wurde, und die zweite Zahl ist der aktuelle Runlevel Ihres Systems.

Im obigen Screenshot steht das „N“ für „none“, was bedeutet, dass sich das System zuvor nicht in einem anderen Runlevel befand. Die „5“ bedeutet, dass sich unser System derzeit im Runlevel 5 befindet.

In diesem Beispiel führen wir CentOS aus, das direkt in eine grafische Oberfläche gebootet wurde, weshalb das System direkt zu Runlevel 5 wechselte.

Wie ändere ich den aktuellen Runlevel?

Sie können den aktuellen Runlevel Ihres Systems mit dem Befehl „telinit“ ändern. Um beispielsweise unter CentOS zu Runlevel 3 zu wechseln, würden Sie Folgendes eingeben:

$ telinit 3

Denken Sie daran, dass Sie der Root-Benutzer sein müssen, um diesen Befehl auszuführen. Beachten Sie, dass Runlevel unter Debian und Ubuntu unterschiedlich funktionieren – zum Beispiel bootet Ubuntu in Runlevel 5, auch ohne eine GUI zu starten.

Wenn Sie dem obigen Beispiel folgen, wird Ihr Bildschirm möglicherweise leer. Das liegt daran, dass Sie beim – jetzt leeren – tty bleiben. Drücken Sie einfach Alt+F1 (oder eine andere Funktionstaste) auf Ihrer Tastatur, um zu einem funktionierenden Terminal zu gelangen.

Wenn wir den Befehl „runlevel“ erneut verwenden, sehen wir, dass wir uns jetzt in Runlevel 3 befinden und der vorherige Runlevel als 5 aufgeführt ist, da wir gerade von ihm gewechselt sind.

Linux-systemd-Ziele vs. Runlevels

In den letzten Jahren hat systemd das altbewährte System „System V init“ (Runlevels) ersetzt. Es funktioniert im Grunde immer noch auf die gleiche Weise, verwendet jedoch einige neue Befehle und bezieht sich stattdessen häufig auf „Runlevels“ als „Ziele“.

Runlevel 0 =poweroff.target (runlevel0.target)

Runlevel 1 =rescue.target (runlevel1.target)

Runlevel 2 =multi-user.target (runlevel2.target)

Runlevel 3 =multi-user.target (runlevel3.target)

Runlevel 4 =multi-user.target (runlevel4.target)

Runlevel 5 =graphisch.Ziel (runlevel5.Ziel)

Runlevel 6 =reboot.target (runlevel6.target)

Wir werden systemd und die Befehle, die Sie kennen müssen, im Verlauf dieses Tutorials weiter durchgehen.

Wie ändere ich den Standard-Runlevel beim Start?

Es gibt viele Gründe, warum Sie in einen anderen Runlevel booten möchten. Beispielsweise ist es üblich, dass Systemadministratoren in die Befehlszeile booten und nur dann eine grafische Oberfläche starten, wenn dies für notwendig erachtet wird.

Für diese Funktionalität müssen Sie sicherstellen, dass Ihr Standard-Runlevel auf 3 und nicht auf 5 eingestellt ist.

In der Vergangenheit war es erforderlich, die Datei /etc/inittab zu bearbeiten, um den Standard-Runlevel beim Start zu definieren. Dies kann bei einigen Distributionen immer noch der Fall sein.

Wenn Sie mit einem Betriebssystem arbeiten, das seit einigen Jahren nicht mehr aktualisiert wurde, ist diese Methode für Sie dennoch relevant.

$ vi /etc/inittab

Im obigen Screenshot ist Runlevel 5 derzeit auf den Standard-Runlevel für den Start eingestellt.

Ab 2016 haben die meisten großen Linux-Distributionen die /etc/inittab-Datei zugunsten von systemd-Zielen abgeschafft – wir werden die Unterschiede später in diesem Artikel behandeln.

Möglicherweise stellen Sie fest, dass Ihr System überhaupt keine /etc/inittab-Datei hat, oder Ihre inittab-Datei rät Ihnen möglicherweise, stattdessen systemd zu verwenden, wie in diesem Screenshot unseres CentOS-Systems.

So überprüfen Sie das aktuelle Standardziel Ihres Systems:

$ systemctl get-default

Im obigen Screenshot lautet die Antwort des Systems „graphical.target“. Wie Sie wahrscheinlich erraten können, ist dies das Äquivalent zu Runlevel 5.

Geben Sie Folgendes ein, um die anderen verfügbaren Ziele und die ihnen zugeordneten Runlevel anzuzeigen:

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

Diese symbolischen Links sagen uns, dass die Systemd-Ziele ziemlich genau so funktionieren wie Runlevels. Wie können wir also den Standard-Runlevel (oder das Ziel) beim Start ändern? Wir müssen einen neuen symbolischen Link wie diesen erstellen:

$ ln -sf /lib/systemd/system/runlevel3.target /etc/systemd/system/default.target

Dieser Befehl ändert unseren Standard-Runlevel auf 3, sodass sich unser System beim nächsten Neustart in Runlevel 3 statt 5 befindet. Wenn Sie einen anderen Runlevel wünschen, würden Sie anstelle der „3“ einfach eine andere Zahl ersetzen der Befehl.

Als Referenz gibt der Schalter -f in diesem Befehl an, dass die Zieldatei entfernt werden sollte, bevor der neue Link erstellt wird. Sie können es auch einfach zuerst mit einem einfachen rm-Befehl entfernen.

Mit dem Befehl „systemctl get-default“ können Sie erneut bestätigen, dass die Änderung erfolgreich durchgeführt wurde.

Runlevel 3 vs. Runlevel 5

Die zwei Runlevel, von denen Sie hören werden und mit denen Sie am meisten arbeiten werden, sind 3 und 5. Im Grunde läuft es darauf hinaus:Runlevel 3 ist eine Befehlszeile und Runlevel 5 ist eine grafische Benutzeroberfläche.

Natürlich folgt nicht jede Distribution dieser Konvention, und Ihr System könnte von einem Administrator so konfiguriert werden, dass diese Runlevel noch mehr Unterschiede aufweisen.

Aber im Allgemeinen funktioniert es so. Wenn Sie sehen möchten, welche Dienste auf diesen beiden Runlevels aktiviert sind, behandeln wir das im nächsten Abschnitt.

Dienste auflisten, die auf einem bestimmten Runlevel aktiviert sind

Bis in die letzten Jahre war „chkconfig –list“ der Befehl, um die Dienste aufzulisten, die auf verschiedenen Runlevels aktiviert werden würden. Wenn Ihr Betriebssystem auf dem neuesten Stand ist, kann dieser Befehl Ihnen einen Fehler ausgeben oder Sie zu systemd zurückstellen.

Wenn wir sehen wollen, welche Dienste gestartet werden, wenn wir in den grafischen Modus (Runlevel 5) booten, können wir diesen Befehl ausführen:

$ systemctl list-dependencies graphical.target

Um die Dienste anzuzeigen, die standardmäßig auf anderen Runlevels ausgeführt werden, ersetzen Sie einfach „graphical.target“ durch den Namen des Ziels, das Sie anzeigen müssen.

Unter welchem ​​Runlevel läuft ein Prozess?

Wenn Sie sehen möchten, auf welchen Runleveln ein bestimmter Dienst ausgeführt wird, können Sie diesen Befehl verwenden:

$ systemctl show -p WantedBy [name of service]

Wenn Sie beispielsweise sehen möchten, auf welchem ​​Runlevel der SSH-Daemon ausgeführt wird, würden Sie Folgendes eingeben:

$ systemctl show -p WantedBy sshd.service

Gemäß der Ausgabe im obigen Screenshot startet der SSH-Dienst auf den Runlevels 2, 3 und 4 (multi-user.target)

Wie ändere ich den Runlevel einer Anwendung?

Wie oben zu sehen ist, läuft unser SSH-Dienst nur auf den Runlevels 2-4 (multi-user.target). Was ist, wenn wir wollen, dass es auch startet, wenn wir in eine grafische Oberfläche booten – Runlevel 5 (graphical.target)? Wir könnten diese Konfiguration mit dem folgenden Befehl anwenden:

$ systemctl enable sshd.service

Sicherheitsprobleme mit Runlevels in Linux

Wie wir bereits in diesem Artikel gesagt haben, besteht der Zweck von Linux-Runlevels darin, einem Administrator die Kontrolle darüber zu geben, welche Dienste unter bestimmten Bedingungen ausgeführt werden. Diese Art der granularen Kontrolle über Ihr System erhöht die Sicherheit, da Sie sicher sein können, dass keine fremden Dienste ausgeführt werden.

Das Problem kann auftreten, wenn ein Administrator nicht genau weiß, welche Dienste ausgeführt werden, und sich daher nicht die Mühe macht, diese Angriffsflächen zu sichern.

Sie können die Methoden in diesem Handbuch verwenden, um Ihren Standard-Runlevel zu konfigurieren und zu steuern, welche Anwendungen ausgeführt werden. Diese Praktiken werden nicht nur Systemressourcen freigeben, sondern Ihren Server auch sicherer machen.

Denken Sie daran, nur den Runlevel zu verwenden, den Sie benötigen. Beispielsweise macht es keinen Sinn, Runlevel 5 (grafische Oberfläche) zu starten, wenn Sie nur das Terminal verwenden möchten.

Wenn Sie zu einem anderen Runlevel wechseln, werden mehrere neue Dienste eingeführt, von denen einige möglicherweise vollständig im Hintergrund ausgeführt werden, und Sie vergessen möglicherweise, sie zu sichern.

Welcher Runlevel ist der beste für mich?

Welcher Runlevel der beste für Sie ist, hängt von der jeweiligen Situation ab. Im Allgemeinen werden Sie die Runlevel 3 und 5 wahrscheinlich regelmäßig verwenden.

Wenn Sie mit der Befehlszeile vertraut sind und keine grafische Oberfläche benötigen, ist Runlevel 3 (bei den meisten Distributionen) am besten für Sie geeignet.

Dadurch wird verhindert, dass unnötige Dienste ausgeführt werden. Wenn Sie hingegen eher ein Desktop-Erlebnis und eine grafische Benutzeroberfläche für die Verwendung verschiedener Apps usw. wünschen, ist Runlevel 5 Ihr bevorzugtes Runlevel.

Wenn Sie Wartungsarbeiten auf einem Produktionsserver durchführen müssen, eignet sich Runlevel 1 gut für diese Situation. Sie können diesen Runlevel verwenden, um sicherzustellen, dass Sie der einzige auf dem Server sind (der Netzwerkdienst wird nicht einmal gestartet) und Sie Ihre Wartungsarbeiten ohne Unterbrechung durchführen können.

In seltenen Fällen müssen Sie möglicherweise sogar Runlevel 4 verwenden. Dies wäre nur in bestimmten Situationen der Fall, in denen Sie oder der Systemadministrator einen benutzerdefinierten Runlevel haben. Wie das geht, erfahren Sie im nächsten Abschnitt.

Wie Sie wahrscheinlich angenommen haben, werden (und können) Sie Ihr System nicht in den Runlevels 0 oder 6 ausführen, aber es ist möglich, zu ihnen zu wechseln, nur um neu zu starten oder auszuschalten. Dies sollte normalerweise nicht notwendig sein, da es andere Befehle gibt, die das für uns erledigen.

Können wir unter Linux einen neuen Runlevel erstellen?

Es ist möglich, unter Linux einen neuen Runlevel zu erstellen, aber es ist äußerst unwahrscheinlich, dass Sie dies jemals tun müssen. Wenn Sie es trotzdem tun wollten, können Sie damit beginnen, eines der vorhandenen systemd-Ziele zu kopieren und es dann mit Ihren eigenen Anpassungen zu bearbeiten.

Die Ziele befinden sich in:

/usr/lib/systemd/system

Wenn Sie Ihr neues Runlevel/Ziel auf der Basis von graphic.target (Runlevel 5) erstellen wollten, kopieren Sie dieses Verzeichnis in Ihr neues Zielverzeichnis.

$ cp /usr/lib/systemd/system/graphical.target /usr/lib/systemd/system/mynew.target

Erstellen Sie danach ein neues „Want“-Verzeichnis, etwa so:

$ mkdir /etc/systemd/system/mynew.target.wants

Und verlinken Sie dann die zusätzlichen Dienste von /usr/lib/systemd/system, die Sie für Ihren neuen Runlevel aktivieren möchten.

Ich hoffe, Sie finden das Tutorial nützlich. Komm immer wieder.


Linux
  1. Was ist die richtige Menge an Auslagerungsspeicher für ein modernes Linux-System?

  2. So aktualisieren Sie auf Linux Mint 20.3:Der richtige Weg

  3. Verständnis des Btrfs-Dateisystems in Fedora Linux

  4. So ändern Sie die Identität eines Linux-Systems

  5. Warum „sshpass“ nicht der richtige Weg ist, um Dateiübertragungen unter Linux zu automatisieren

Der Linux-Top-Befehl

So verwenden Sie den fd-Befehl auf einem Linux-System

Verstehen des uname-Befehls in Linux

EndeavourOS – Lerne Arche richtig

Verstehen des Zeitbefehls in Linux

Verstehen der /etc/fstab-Datei unter Linux