Systemd: Unterschied zwischen den Versionen
K (→Umgang mit journalctl) |
K (→Nützliche Filter) |
||
Zeile 82: | Zeile 82: | ||
==Nützliche Filter== | ==Nützliche Filter== | ||
− | -b | + | Es gibt viele weitere wichtige Filter. Hier einige wenige, die bekannt sein sollten: |
− | -k | + | {| class="wikitable" |
− | -u | + | |+Schalter |
+ | |- | ||
+ | |"-b" | ||
+ | |Bootvorgänge | ||
+ | |- | ||
+ | |"-k" | ||
+ | |dmesg betrachten | ||
+ | |- | ||
+ | |"-u" | ||
+ | |Nach Unit bzw. Dienst | ||
+ | |} | ||
+ | Für mehr details bitte die manpage lesen. | ||
==Das Startprotokoll== | ==Das Startprotokoll== |
Version vom 30. August 2015, 14:49 Uhr
Dieser Artikel oder Teile davon wurden mit 'Review' markiert. Das bedeutet, dass größere Arbeiten am Inhalt des Artikels abgeschlossen sind und der Autor eine Korrekturlesung durch andere User zur Qualitätssicherung für angebracht hält.
Zu sichtende Teile: Kompletter Artikel Bitte hilf LinuxClubWiki, indem du den zu sichtenden Teil überprüfst und den Artikel gegebenenfalls überarbeitest! |
Aus technischen Gründen ist es leider nicht Möglich der korrekten Schreibweise von "systemd" in der Überschrift dieses Artikels gerecht zu werden. |
Inhaltsverzeichnis
Was ist systemd?
Systemd ist ein Dienst oder Daemon und bietet einige grundlegende Werkzeuge für Linux Systeme. Er wird zur System- und Diensteverwaltung eingesetzt. Er läuft mit PID1 und startet dann alle weiteren Prozesse des Betriebssystems.
Er startet also als erstes (PID1), regelt und steuert dabei alle weiteren Dienste. Er beendet sich beim Herunterfahren als letztes. Der daemon systemd ist damit also tief im Ablauf eines Systemstarts verwurzelt. Siehe Bootvorgang.
SUSE wechsel zu systemd
Mit unter libervoll vollzieht sich der Wechsel zu systemd als Init-System in SUSE mit Sätzen, zitert aus den Releasenotes und dem Adminguide zu SUSE Linux Enterprise Server 12, wie:
New core technologies like systemd (replacing the time honored System V based init process)
Versuchsweise frei übersetzt: Neue Kerntechnologien wie systemd (ersetzen den durch lange Dienstzeit geehrten System V basierten init prozess).
Starting with SUSE Linux Enterprise Server 12 systemd is a replacement for the popular System V init daemon. systemd is fully compatible with System V init (by supporting init scripts).
Versuchsweise frei übersetzt: Beginnend mit SUSE Linux Enterprise Server 12 ist systemd ein Ersatz für den populären System V init daemon. Er ist voll kompatibel mit dem System V Init-Vorgang, indem er Init Skripte unterstützt.
Abwärts Kompatibilität
Als sogenanntes "drop-in replacement". Bietet systemd Kompatibilität zu seinen Vorgängern:
- kompatibel mit LSB init Skripten
- kompatibel mit SysV
Fähigkeiten
Als Verwaltungsinstrument bringt systemd einige Neuerungen und Verbesserungen, setzt dabei allerdings auch stark auf alt bewährtes. Um nur einiges an Neuerungen und Fähigen zu nennen:
- Fähigkeit zur aggressiven Parallelisierung
- Nutzt Socket und D-Bus Aktivierung um Prozesse zu starten
- Bietet ein "auf Bedarf"-basiertes starten von Diensten
- Überwacht Prozesse die cgroups verwenden
- unterstützt Schnappschüsse und deren Wiederherstellung
- Verwaltet mount und automount Einhängepunkte
- Implementiert abhängigkeitsbasierte Logik für Dienste
- Kann SysV-Init als drop-in ersetzen.
- uvm.
systemd Steuern
Es gibt verschiedene Wege, wie systemd gesteuert werden kann. Einmal gibt es grafische Tools, wie die Dienste-Verwaltung in YaST. Das ehemals benannte Menü: "Runlevel-Editor" nennt sich heute bei Migration zu systemd "Dienste-Verwaltung". Dann gibt es noch die Möglichkeit mit der Shell. Eine vollständige auflistung der Steuerungsmöglichkeiten, würde den Rahmen dieser Doku total sprengen. Ich nenne hier einige aus Nutzersicht durchaus wichtige Möglichkeiten:
- systemctl (den System- und Dienstmanager steuern.)
- journalctl (Das systemd journal abfragen. Also logs.)
- systemd-tmpfiles (Erstellt und löscht temporäre Strukturen.)
- systemd-analyze (Analysiert die boot Geschwindigkeit.)
- .. uvm.
Umgang mit systemctl
Bitte zum detaillierten Umgang mit systemctl die Manpage lesen. Oder beispielsweise im (Achtung externer Link): Adminguide nachschlagen.
man systemctl
Nachfolgend einige einfache Befehle, die empfehlungsweise bekannt sein sollten.
Dienste starten und beenden
Starten
systemctl start mein_dienst
Beenden
systemctl stop mein_dienst
Automatischen Start De-/Aktivieren
Automatischen Start aktivieren:
systemctl enable mein_dienst
Automatischen Start deaktivieren:
systemctl disable mein_dienst
Status eines Dienstes abfragen
systemctl status mein_dienst
In der Ausgabe würde das bei einem erfolgreich gestarteten und für den automatischen Start konfigurierten Dienst in etwa so aussehen:
mein_dienst.service - mein_dienst Daemon Loaded: loaded (/usr/lib/systemd/system/mein_dienst.service; enabled) Active: active (running) since Sa 2015-08-22 02:17:01 CEST; 1s ago Process: 6717 ExecStartPre=/usr/sbin/mein_dienst (code=exited, status=0/SUCCESS) Main PID: 6721 (mein_dienst)
systemd neu laden
Angenommen, man hätte beispielsweise Änderungen an mein_dienst.service Dateien vorgenommen, muss systemd neu geladen werden, damit sie sofort wirksam werden.
systemctl daemon-reload
Umgang mit journalctl
Systemd beinhaltet seinen eigenen Dienst zur Systemprotokollierung. Dieser sammelt wichtige Informationen und stellt diese wiederum zur Abfrage bereit. Das ist insbesondere zur Systemüberwachung von Nutzen. Es kann beispielsweise mit Hilfe von journalctl ein fehlerhafter Systemstart diagnostiziert werden. Angenommen dies wäre der Fall, so wird spätestens an dieser Stelle ein gewisses Grundwissen zum Umgang mit journalctl erforderlich, wenn es darum geht konkrete Fehlermeldungen bereitzustellen.
Generell erfolgt die Ansicht der Protokolle automatisch in einem Pager. |
Das gesamte journal betrachten:
journalctl
Wenn man einfach nur 'journalctl' aufruft, wird das gesamte journal angezeigt. Begginnend mit dem ältesten Eintrag.
Nützliche Filter
Es gibt viele weitere wichtige Filter. Hier einige wenige, die bekannt sein sollten:
"-b" | Bootvorgänge |
"-k" | dmesg betrachten |
"-u" | Nach Unit bzw. Dienst |
Für mehr details bitte die manpage lesen.
Das Startprotokoll
journalctl -b
Der Schalter '-b' sagt journalctl, man möchte das Startprotokoll betrachten.
Ein Protokoll filtern
Angenommen, man möchte nur ein bestimmtes Startprotokoll sehen. Etwa vom vorhergehenden systemstart:
journalctl --list-boots
(Gibt eine Liste vorangegangener Protokolle in einer Übersicht aus). Die erste Spalte kann man als Indikator heranziehen. Beispielausgabe:
-2 9daa81e2ec374cb1b6adba8d96896605 Sa 2015-08-29 23:26:53 CEST—Sa 2015-08-29 23:49:17 CEST -1 c430ed034607494ba2a3bc1ded4e4972 Sa 2015-08-29 23:49:35 CEST—Sa 2015-08-29 23:54:27 CEST 0 1f3a7894d0f34f4392c5517b83279c4d Sa 2015-08-29 23:54:53 CEST—So 2015-08-30 16:22:40 CEST
Das Startprotokoll des vorangegangenen Systemstarts kann man sich dann einzeigen indem man dieses Indikator angibt:
journalctl -b -1
Filtern nach Unit
Angenommen man möchte, dass nur Logeinträge zum Unit oder Dienst "sshd" in der Ausgabe angezeigt werden.
journalctl -u sshd
Umgang mit systemd-analyze
Der Befehl systemd-analyze kann dazu genutzt werden, die Leistung eines Systemstarts zu messen. Beispielsweise wie lange es dauert, bis ein bestimmtes festgelegtes Ziel des Startvorgangs erreicht wurde. Ich möchte das hier zeigen, damit Verständnis erlangt werden kann, was denn bei einem Systemstart von gerade mal 20 Sekunden so alles abgeht.
- sytemd-analyze (Standardausgabe)
- Grafischer plot als SVG
Für details bitte die manpage heranziehen.
Umgang mit systemd-tmpfiles
Der Dienst systemd-tmpfiles ist im System für die Verwaltung temporärer Dateisystemstrukturen zuständig. Er erstellt und löscht diese kann sie aber auch bereinigen.
...usw.
Hier möchte ich versuchsweise erklären, da bei SUSE von Haus aus bestimmte Strukturen nicht bereinigt werden. Wie man diese bereinigen kann.