Advertisements

5 Gründe, warum Systemadministratoren systemd lieben

Wie Systemadministratoren wissen, passiert auf modernen Computern viel. Anwendungen laufen im Hintergrund, automatisierte Events warten darauf, zu einem bestimmten Zeitpunkt ausgelöst zu werden, Log-Dateien werden geschrieben, Statusberichte werden geliefert. Traditionell wurden diese unterschiedlichen Prozesse mit einer Sammlung von Unix-Tools mit großer Wirkung und mit großer Effizienz verwaltet und überwacht. Moderne Computer sind jedoch vielfältig, mit lokalen Diensten, die neben containerisierten Anwendungen ausgeführt werden, einfachem Zugriff auf Clouds und die Cluster, auf denen sie ausgeführt werden, Echtzeitprozesse und mehr zu verarbeitende Daten denn je.

Eine einheitliche Methode zu deren Verwaltung zu haben, ist eine Erwartung für Benutzer und ein nützlicher Luxus für vielbeschäftigte Systemadministratoren. Für diese nicht triviale Aufgabe muss der Systemdämon oder System, wurde entwickelt und schnell von allen großen Linux-Distributionen übernommen.

Mehr über Systemadministratoren

Natürlich ist systemd nicht die einzige Möglichkeit, ein Linux-System zu verwalten. Es gibt viele alternative Init-Systeme, darunter sysvinit, OpenRC, runit, s6 und sogar BusyBox, aber systemd behandelt Linux als einen einheitlichen Datensatz, der mit robusten Tools konsistent manipuliert und abgefragt werden soll. Für einen vielbeschäftigten Systemadministrator und viele Benutzer ist die Geschwindigkeit und Benutzerfreundlichkeit von systemd ein wichtiges Merkmal. Hier sind fünf Gründe dafür.

Boot-Management

Das Booten eines Linux-Computers kann ein überraschend seltenes Ereignis sein, wenn Sie es möchten. Sicherlich werden in der Serverwelt Betriebszeiten oft mitgezählt Jahre statt Monate oder Wochen. Laptops und Desktops werden in der Regel ziemlich häufig heruntergefahren und gestartet, obwohl selbst diese ebenso wahrscheinlich angehalten oder in den Ruhezustand versetzt werden wie sie heruntergefahren werden müssen. In jedem Fall kann die Zeit seit dem letzten Startereignis als eine Art Sitzungsmanager für eine Computerzustandsprüfung dienen. Dies ist eine nützliche Methode, um einzuschränken, welche Daten Sie bei der Überwachung Ihres Systems oder bei der Diagnose von Problemen anzeigen.

Für den wahrscheinlichen Fall, dass Sie sich nicht mehr erinnern können, wann Sie Ihren Computer das letzte Mal gebootet haben, können Sie die Boot-Sitzungen mit dem Protokollierungstool von systemd auflisten. journalctl:

$ journalctl --list-boots
-42 7fe7c3... Fri 2020-12-04 05:13:59 - Wed 2020-12-16 16:01:23
-41 332e99... Wed 2020-12-16 20:07:39 - Fri 2020-12-18 22:08:13
[...]
-1 e0fe5f... Mon 2021-03-29 20:47:46 - Mon 2021-03-29 21:59:29
 0 37fbe4... Tue 2021-03-30 04:46:13 - Tue 2021-03-30 10:42:08

Die neuesten Boot-Sitzungen werden unten in der Liste angezeigt, sodass Sie die Ausgabe an weiterleiten können tail nur für die neuesten Stiefel.

Die Zahlen auf der linken Seite (42, 41, 1 und 0 in diesem Beispiel) sind Indexnummern für jede Boot-Sitzung. Mit anderen Worten, um Protokolle nur für eine bestimmte Boot-Sitzung anzuzeigen, können Sie deren Indexnummer als Referenz verwenden.

Protokollbewertungen

Das Betrachten von Protokollen ist eine wichtige Methode, um Informationen über Ihr System zu extrapolieren. Protokolle bieten einen Verlauf vieler Aktivitäten, an denen Ihr Computer ohne Ihre direkte Aufsicht beteiligt ist. Sie können sehen, wann Dienste gestartet wurden, wann zeitgesteuerte Jobs ausgeführt wurden, welche Dienste im Hintergrund ausgeführt werden, welche Aktivitäten fehlgeschlagen sind und mehr. Einer der häufigsten Schritte zur anfänglichen Fehlerbehebung besteht darin, Protokolle zu überprüfen, die einfach zu erledigen sind journalctl:

$ journalctl --pager-end

Der --pager-end (oder -e kurz) Option startet Ihre Ansicht der Protokolle am Ende der journalctl Ausgabe, daher müssen Sie nach oben scrollen, um Ereignisse anzuzeigen, die früher aufgetreten sind.

Systemd führt einen “Katalog” von Fehlern und Meldungen, der mit Fehleraufzeichnungen, möglichen Lösungen, Hinweisen auf Support-Foren und Entwicklerdokumentation gefüllt ist. Dies kann einen wichtigen Kontext für ein Protokollereignis liefern, das ansonsten ein verwirrendes Signal in einem Meer von Nachrichten sein kann oder, schlimmer noch, völlig unbemerkt bleiben könnte. Um Fehlermeldungen mit erklärendem Text einzubinden, können Sie das --catalog (oder -x kurz) Option:

$ journalctl --pager-end --catalog

Um die Protokollausgabe, die Sie durchlaufen müssen, weiter einzuschränken, können Sie angeben, für welche Boot-Sitzung Sie Protokolle anzeigen möchten. Da jede Boot-Sitzung indiziert ist, können Sie bestimmte Sitzungen mit dem --boot Option und zeigen Sie nur die Protokolle an, die sich darauf beziehen:

$ journalctl --pager-end --catalog --boot 42

Sie können auch Protokolle für eine bestimmte systemd-Einheit anzeigen. Um beispielsweise ein Problem mit Ihrem Secure Shell (SSH)-Dienst zu beheben, können Sie angeben --unit sshd um nur die Protokolle anzuzeigen, die für die . gelten sshd Dämon:

$ journalctl --pager-end
--catalog --boot 42
--unit sshd

Service-Management

Die erste Aufgabe von systemd besteht darin, Ihren Computer zu booten, und dies geschieht im Allgemeinen schnell, effizient und effektiv. Aber die nie abgeschlossene Aufgabe ist das Service-Management. Systemd stellt standardmäßig sicher, dass die Dienste, die Sie ausführen möchten, tatsächlich starten und während Ihrer Sitzung weiterlaufen. Das ist schön robust, denn theoretisch kann sogar ein abgestürzter Dienst ohne Ihr Zutun neu gestartet werden.

Ihre Schnittstelle, um systemd bei der Verwaltung von Diensten zu unterstützen, ist die systemctl Befehl. Damit können Sie die Unit-Dateien anzeigen, die einen Dienst definieren:

$ systemctl cat sshd
# /usr/lib/systemd/system/sshd.service
[Unit]
Description=OpenSSH server daemon
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target

[Service]
Type=notify
EnvironmentFile=-/etc/crypto-policies/back-ends/opensshserver.config
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D $OPTIONS $CRYPTO_POLICY
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s

[Install]
WantedBy=multi-user.target

Die meisten Unit-Dateien existieren in /usr/lib/systemd/system/ Wie bei vielen wichtigen Konfigurationen sollten Sie diese jedoch mit lokalen Änderungen ändern. Auch dafür gibt es eine Schnittstelle:

$ systemctl edit sshd

Sie können sehen, ob ein Dienst gerade aktiv ist:

$ systemctl is-active sshd
active
$ systemctl is-active foo
inactive

Ebenso können Sie mit . sehen, ob ein Dienst fehlgeschlagen ist is-failed.

Das Starten und Stoppen von Diensten ist angenehm intuitiv:

$ systemctl stop sshd
$ systemctl start sshd

Und das Starten eines Dienstes beim Booten ist einfach:

$ systemctl enable sshd

Ergänzen Sie die --now Option zum Aktivieren eines Dienstes beim Booten oder zum Starten für Ihre aktuelle Sitzung.

Timer

Als Sie vor langer Zeit eine Aufgabe unter Linux automatisieren wollten, war das kanonische Werkzeug für diese Aufgabe cron. Es gibt immer noch einen Platz für den cron-Befehl, aber es gibt auch einige überzeugende Alternativen. Zum Beispiel die anacron command ist ein vielseitiges, cron-ähnliches System, das Aufgaben ausführen kann, die sonst während einer Ausfallzeit übersehen worden wären.

Geplante Ereignisse sind kaum mehr als Dienste, die zu einem bestimmten Zeitpunkt aktiviert werden, daher verwaltet systemd eine cron-ähnliche Funktion namens Timer. Sie können aktive Timer auflisten:

$ systemctl list-timers
NEXT                          LEFT      
Tue 2021-03-30 12:37:54 NZDT  16min left [...]
Wed 2021-03-31 00:00:00 NZDT  11h left [...]
Wed 2021-03-31 06:42:02 NZDT  18h left [...]

3 timers listed.
Pass --all to see loaded but inactive timers, too.

Sie können einen Timer genauso aktivieren, wie Sie einen Dienst aktivieren:

$ systemctl enable myMonitor.timer

Ziele

Ziele sind die letzte Hauptkomponente der systemd-Matrix. Ein Ziel wird durch eine Unit-Datei definiert, genau wie Dienste und Timer. Auf die gleiche Weise können auch Ziele gestartet und aktiviert werden. Was Ziele einzigartig macht, ist, dass sie andere Unit-Dateien in beliebiger Weise gruppieren. Zum Beispiel möchten Sie vielleicht von einer Textkonsole anstelle eines grafischen Desktops booten, so dass die multi-user Ziel existiert. Allerdings ist die multi-user Ziel ist nur das graphical target ohne die Desktop-Unit-Dateien als Abhängigkeiten.

Kurz gesagt, Ziele sind eine einfache Möglichkeit für Sie, Dienste, Timer und sogar andere Ziele zusammen zu sammeln, um einen beabsichtigten Zustand für Ihren Computer darzustellen.

Tatsächlich ist ein Neustart, ein Ausschalten oder ein Herunterfahren innerhalb von systemd nur ein weiteres Ziel.

Sie können alle verfügbaren Ziele auflisten, indem Sie die list-unit-files Option, einschränken mit der --type Option auf gesetzt target:

$ systemctl list-unit-files --type target

Mit systemd die Kontrolle übernehmen

Modernes Linux verwendet systemd für die Dienstverwaltung und die Protokollprüfung. Es bietet alles, von persönlichen Linux-Systemen bis hin zu Unternehmensservern, mit einem modernen Mechanismus zur Überwachung und einfachen Wartung. Je öfter Sie es verwenden, desto besser wird systemd vorhersehbar und intuitiv, und desto mehr entdecken Sie, wie unterschiedliche Teile Ihres Systems miteinander verbunden sind.

Um systemd besser kennenzulernen, müssen Sie es verwenden. Und um sich mit der Verwendung vertraut zu machen, laden Sie unseren Spickzettel herunter und beziehen Sie sich oft darauf.

5 Gründe, warum Systemadministratoren systemd lieben

Leave a Reply

Your email address will not be published. Required fields are marked *

Scroll to top