Systemd: Vater aller anderen Prozesse
Ein Linux- und jedes andere *nix-System startet immer einen Prozess, der der Vater aller anderen Prozesse ist. Wenn Sie Systemd verwenden, ist dieser Prozess systemd, der Prozess wird immer 'init' genannt, unabhängig vom init-System. Sobald systemd ausgeführt wird, werden die Daemons gestartet, die die Subsysteme ausführen. Die Daemons kontrollieren, welche Ressourcen Sie haben und welche Systeme geöffnet sind. Ihre Anmeldeaufforderung ist ein von systemd verwalteter Dienst. Systemd startet viele andere Dienste und mountet auch alle Ihre Festplatten, einschließlich der Snap-Mounts.
Wie kontrollierst du, was beginnt??
Zunächst einmal hatte das früheste Init-System Runlevels, die viele Leser erkennen werden. Runlevel 1 war Single-User-Modus, 2 Multi-User-Modus ohne Netzwerk und 3-5 Multi-User und grafisch. Das Setzen des Runlevels auf 0 bedeutete Halt und 6 bedeutete Neustart. Die Entwickler von systemd fanden diese Ebenen unklar und änderten sie in Targets. Ziele sind nicht genau gleich, haben aber eine ähnliche Funktion. Wenn ein bestimmtes Ziel ausgeführt wird, wird eine bestimmte Sammlung von Einheiten ausgeführt. Mehr zu Einheiten später.
Festlegen des „Runlevels“, genannt Ziel.
Sie können das Ziel während des Laufens ändern, zum Beispiel können Sie ein Terminal verwenden, um Ihr Ziel auf Mehrbenutzer einzustellen. Dies würde Ihre GUI, X oder Wayland stoppen, aber Sie und andere lassen sich mit einer Textkonsole anmelden. Verwenden Sie den folgenden Befehl.
$ systemctl Mehrbenutzer isolieren.ZielOder verwenden Sie stattdessen den folgenden Befehl, wenn Sie Ihren Desktop starten möchten.
$ systemctl graphisch isolieren.ZielWas dich wirklich interessiert, ist, wie du das richtige Level startest. Auf diese Weise kannst du herausfinden, was du gerade hast.
$ systemctl get-defaultUm die Standardeinstellung zu ändern, setzen Sie es.
$ systemctl set-default grafisch.ZielDieser Befehl lässt tatsächlich viele Einheiten und Dienste starten, wenn Sie Ihren Computer starten. Vielleicht möchten Sie jedoch einen einzelnen Dienst starten oder stoppen.
STARTEN, stoppen, aktivieren und deaktivieren eines Dienstes.
Hier haben Sie die Möglichkeit zu ändern, was beim Booten und während des normalen Betriebs passiert. Im Gegensatz zu den Zielen sind Einheiten für einen bestimmten Dienst etwas Besonderes. Um einen Dienst zu stoppen, verwenden Sie 'systemctl stop', ebenso können Sie 'start' und 'restart' verwenden. Um einen Dienst beim Booten zu starten, verwenden Sie 'enable', um ihn zu stoppen 'disable'. Wählen Sie einen Dienst aus und starten und stoppen Sie ihn, während er läuft.
$ systemctl-statusbecher.BedienungDieser Befehl zeigt den Status des Dienstes an, er zeigt auch eine Liste der Aktionen an, die das System bezüglich des Dienstes durchgeführt hat. Um den Dienst zu stoppen, verwenden Sie den folgenden Befehl.
$ systemctl stop cups.BedienungDer Dienst ist jetzt für Ihre aktuelle Sitzung angehalten. Um es so zu ändern, dass es beim nächsten Start nicht startet, verwenden Sie disable.
$ systemctl Tassen deaktivieren.BedienungBeachten Sie, dass Sie den Dienst nur deaktivieren können, dies hätte keine Auswirkungen auf Ihre aktuelle Situation. Der Dienst läuft einfach weiter. Beim nächsten Booten wird der Dienst jedoch nicht gestartet.
Systemd steuert auch Halterungen, Geräte, Steckdosen und mehr. Einheiten sind weiter unten und leichter zu verstehen, wenn Sie schon einmal mit einem Linux zu tun hatten. Sie können diese auch selbst festlegen, aber der größte Effekt beim Booten besteht darin, Dienste zu steuern.
Wie fügst du deine eigenen Skripte hinzu??
Sie können ganz einfach Ihre eigenen Skripte hinzufügen. Interessant ist, wie Sie Ihr Skript oder Ihren Dienst von anderen abhängig machen. Dies wird in dieser WLAN-Resume-Dienstdatei anschaulich demonstriert.
[Einheit]Description=Netzwerkmanager bei Wiederaufnahme neu starten
Nach=Aussetzen.Ziel
Nach=überwintern.Ziel
Nach=Hybrid-Schlaf.Ziel
[Bedienung]
Typ=oneshot
ExecStart=/bin/systemctl restart network-manager.Bedienung
[Installieren]
WantedBy=aussetzen.Ziel
WantedBy=hibernate.Ziel
WantedBy=hybrid-sleep.Ziel
Dieser Code erstellt einen Dienst, der einmal (oneshot) nach den drei im Code genannten Zielen ausgeführt wird. Der ausgeführte Code ist in diesem Fall ein einzelner Befehl. Sie können ExecStart auch auf ein Skript Ihrer Wahl verweisen.
Fazit
Sie können Ihr System selbst ändern, insbesondere wie es bootet, aber beachten Sie, dass dies viele Konsequenzen für jeden Dienst hat. Stellen Sie also sicher, dass Ihr Code stabil und schnell ausführbar ist.