Systemd ist ein System - und Service-Manager für Linux, kompatibel mit SysV - und LSB-Init-Skripten. Systemd bietet aggressive Parallelisierungsmöglichkeiten, nutzt Sockel - und D-Bus-Aktivierung für Startdienste, bietet On-Demand-Start von Daemons an, verfolgt Prozesse mit Linux-Cgroups, unterstützt Snapshots und Wiederherstellung des Systemstatus, pflegt Mount - und Automotive-Punkte und implementiert ein Aufwändige transaktionsabhängige Dienstkontrolllogik. Es kann als Drop-in Ersatz für sysvinit arbeiten. Weitere Informationen finden Sie im Video unter youtubewatchvTyMLi8QF6sw Für Systemadministratoren Systemadministratoren können diese Seite besuchen. Um zu verstehen, wie man die nativen systemctl-Aufrufe benutzt, die ihren alten Workflow in SysVinit ersetzen. Beachten Sie, dass die Befehle service und chkconfig weiterhin in der systemd world funktionieren. Warum systemd systemd Dokumentation systemd hat sehr umfangreiche Dokumentation. Siehe Boot-Kernel-Befehlszeile On boot systemd aktiviert (standardmäßig) die Zieleinheit default. target, deren Job ist, Dienste und andere Einheiten zu aktivieren, indem sie sie über Abhängigkeiten ziehen. Um das Gerät zu aktivieren, um es zu aktivieren, analysiert systemd seine eigenen Kernel-Befehlszeilenargumente über die Befehlszeilenoption systemd. unit. Dies kann verwendet werden, um vorübergehend in eine andere Boot-Einheit zu booten. Die klassischen Run-Levels werden wie folgt ersetzt: systemd. unitrescue. target ist eine spezielle Zieleinheit für die Einrichtung des Basissystems und einer Rescue-Shell (ähnlich der Run Level 1) systemd. unitemergency. target. Ist sehr ähnlich zu übergeben initbinsh aber mit der Option, das volle System von dort aus zu starten systemd. unitmulti-user. target für die Einrichtung eines nicht grafischen Multi-User-System systemd. unitgraphical. target für die Einrichtung eines grafischen Login-Bildschirm. Für Details zu diesen speziellen System-Boot-Einheiten, sehen Sie die man systemd. special Seite. Es scripts Was ist das Werkzeug, um Dienste mit systemd systemctl zu verwalten ist das primäre Werkzeug zu verwenden. Es kombiniert die Funktionalität von service und chkconfig zu einem einzigen Tool, das Sie zB für aktivierbare Dienste dauerhaft oder nur für die aktuelle Session nutzen können. Liste aller laufenden Dienste usw.: Siehe man systemctl für weitere Details. Systemd-cgls listet den laufenden Prozess in einem Baumformat auf. Es kann rekursiv den Inhalt einer bestimmten Kontrollgruppe anzeigen. Weitere Informationen finden Sie unter man systemd-cgls. Wie kann ich einen Start starten oder aktiviert werden: Aktiviert sofort einen Dienst: Deaktiviert sofort einen Dienst: Neustart eines Dienstes: Zeigt den Status eines Dienstes an, egal ob er ausgeführt wird oder nicht: Ermöglicht den Start eines Dienstes beim Booten: Deaktiviert einen Dienst, der nicht gestartet werden soll Bootup: Verhindern, dass ein Dienst dynamisch oder sogar manuell gestartet wird, es sei denn, es wurde nicht entlastet: Überprüfen Sie, ob ein Dienst bereits aktiviert ist oder nicht: Weitere Informationen finden Sie unter man systemctl. Wie kann ich das Ziel ändern (runlevel) systemd hat das Konzept der Ziele, die ein flexiblerer Ersatz für Runlevels in sysvinit ist. Run Level 3 wird durch multi-user. targed emuliert. Run Level 5 wird durch graphical. targe emuliert. Runlevel3.target ist eine symbolische Verknüpfung zu multi-user. target und runlevel5.target ist eine symbolische Verknüpfung zu graphical. target. Sie können auf Runlevel 3 umschalten. Sie können zu Runlevel 5 wechseln, indem Sie ausführen. Wie ändere ich das Standardziel graphical. target ist die Voreinstellung. Vielleicht möchten Sie multi-user. target für das Äquivalent von nicht grafischen (Runlevel 3) von sysv init. Die vollständige Liste der Ziele kann über systemctl list-units abgerufen werden - typetarget systemd verwendet keine etcinittab-Datei. Wie kenne ich das aktuelle Ziel Wie man die Maschine ausschaltet Einige Möglichkeiten sind: halt - p. Init 0. shutdown - P jetzt Beachten Sie, dass halt verwendet, um das gleiche wie Poweroff in früheren Fedora Releases arbeiten, aber systemd unterscheidet zwischen den beiden, so halt ohne Parameter jetzt genau das, was es sagt - es stoppt nur das System, ohne es auszuschalten. Funktioniert service Befehl mit systemd Ja. Es wurde geändert, um systemctl automatisch beim Umgang mit systemd Service-Dateien aufzurufen. Also einer der folgenden Befehle tut dasselbe Ding chkconfig Befehl Arbeit mit systemd Ja, zum Einschalten von On-Service, Kompatibilität wurde auf beiden Weisen zur Verfügung gestellt. Chkconfig wurde geändert, um systemctl beim Umgang mit systemd Service-Dateien aufzurufen. Auch Systemctl ruft automatisch chkconfig beim Umgang mit einer traditionellen sysv init Datei auf. Also einer der folgenden Befehle macht die gleiche Sache chkconfig --list doesnt Liste Systemd Services, nur Sys V-Dienste. Die Ausgabe von chkconfig nimmt dies bei der Bereitstellung zusätzlicher Informationen zur Kenntnis. Funktioniert system-config-services mit systemd Wie ändere ich die Anzahl der gettys standardmäßig Die einfachste Möglichkeit ist, etcsystemdlogind. conf (man-Seite) zu bearbeiten: Diese Einstellung wird nach dem Neustart wirksam. Alternativ können getty. services, die die Anmeldeaufforderung öffnen, aktiviert und gestartet werden. So fügen Sie eine weitere getty hinzu: So entfernen Sie eine getty: systemd verwendet keine etcinittab-Datei. Wie stelle ich die automatische Anmeldung auf einem virtuellen Konsolen-Terminal ein. Erstellen Sie zunächst einen neuen Dienst wie getty. service: Dann bearbeiten Sie ExecStart-, Neustart - und Alias-Werte wie folgt: und laden Sie den Dämon endgültig neu und starten Sie den Dienst: Beachten Sie, dass, wenn Sie die tty8-Sitzung beenden , Du wirst es nicht in der Lage sein, es bis zum nächsten Neustart oder manueller Start von systemctl zu verwenden, außer wenn du Neustart wie immer verlässt, aber ich empfehle, dies aus Sicherheitsgründen zu vermeiden. Wie kann ich eine Einheitsdatei anpassen, um eine benutzerdefinierte Unit-Datei hinzuzufügen Die beste Möglichkeit, Unit-Dateien anzupassen, besteht darin, etcsystemdsystemfoobar. service. d.conf hinzuzufügen, wo foobar. service der Name des Dienstes ist, den Sie anpassen möchten. Wenn ein Verzeichnis noch nicht existiert, erstellen Sie eine und legen Sie eine conf-Datei mit den Einstellungen, die Sie überschreiben möchten. Zum Beispiel, siehe man systemd. unit Seite für weitere Details. Vergessen Sie nicht, den systemd-Daemon mit systemctl-Daemon-reload und systemctl neu zu starten, um nach der Bearbeitung einer Unit-Datei zu starten, wo foobar der Name des Gerätes ist. Beachten Sie auch, dass Sie systemd-delta auflisten können, um die angepassten Einheitsdateien aufzulisten, und auch die genauen Unterschiede Bei der Überschreitung von Optionen, die mehrfach eingestellt werden können, ist Vorsicht geboten (ExecStart ExecStartPre, ExecStartPost ist ein gängiges Beispiel). Die Zuordnung eines Wertes zu der Option hängt an der vorhandenen Liste an, während der leere Wert die Liste zurücksetzt. Zum Beispiel, sagen wir, wir haben eine Service-Datei wie folgt: Wenn gestartet, wird dieser Service drucken Die gleichen Regeln gelten für Snippets in. d Verzeichnisse. Dies bedeutet, dass Snippets, die ExecStart und ähnliche Einstellungen überschreiben, oft mit der leeren Zuweisung ExecStart beginnen sollten. Gefolgt von der neuen Einstellung. Wie kann ich Systemprobleme debuggen, kommt mit umfangreicher Dokumentation mit mehreren Man-Seiten. Referencessystemd ist eine Suite von Basisbausteinen für ein Linux-System. Es bietet einen System - und Service-Manager, der als PID 1 läuft und den Rest des Systems startet. Systemd bietet aggressive Parallelisierungsmöglichkeiten, nutzt Socket - und D-Bus-Aktivierung für Startdienste, bietet On-Demand-Start von Daemons, verfolgt Prozesse mit Linux-Kontrollgruppen. Pflegt Mount - und Automount-Punkte und implementiert eine aufwändige, transaktionsabhängige Dienststeuerungslogik. Systemd unterstützt SysV - und LSB-Init-Skripte und arbeitet als Ersatz für sysvinit. Andere Teile beinhalten einen Logging-Daemon, Dienstprogramme zur Steuerung der grundlegenden Systemkonfiguration wie Hostname, Datum, Gebietsschema, pflegen eine Liste der angemeldeten Benutzer und führen Container und virtuelle Maschinen, Systemkonten, Laufzeitverzeichnisse und Einstellungen und Dämonen, um einfaches Netzwerk zu verwalten Konfiguration, Netzwerkzeitsynchronisation, Protokollweiterleitung und Namensauflösung. Hinweis: Für eine ausführliche Erläuterung, warum Arch in systemd verschoben hat. Sehen Sie dieses Forum Post. Grundlegende systemische Nutzung Der Hauptbefehl, der introspect und control systemd verwendet wird, ist systemctl. Einige ihrer Verwendungen untersuchen den Systemzustand und die Verwaltung des Systems und der Dienste. Siehe man systemctl für weitere Details. Tipp: Sie können alle folgenden systemctl-Befehle mit dem - H Benutzer-Host-Switch verwenden, um eine systemd-Instanz auf einem Remote-Rechner zu steuern. Dies wird SSH verwenden, um eine Verbindung zu der entfernten Systeminstanz herzustellen. Systemadm ist das offizielle grafische Frontend für systemctl und wird vom systemd-ui Paket zur Verfügung gestellt. Plasma-Benutzer können systemd-kcm als grafische Fronted für systemctl installieren. Nach der Installation wird das Modul unter Systemverwaltung hinzugefügt. Analysieren des Systemstatus Systemstatus anzeigen mit: laufende Einheiten: Liste fehlgeschlagene Einheiten: Die verfügbaren Einheitsdateien können im usrlibsystemdsystem und etcsystemdsystem gesehen werden (letzteres hat Vorrang). Liste der installierten Einheitsdateien mit: Verwenden von Einheiten Einheiten können zB Dienste (.service), Mountpunkte (.mount), Geräte (.device) oder Sockets (.socket) sein. Bei der Verwendung von systemctl. Sie müssen in der Regel den vollständigen Namen der Einheitsdatei angeben, einschließlich des Suffixes, zB sshd. socket. Es gibt jedoch einige kurze Formulare bei der Angabe der Einheit in den folgenden systemctl-Befehlen: Wenn Sie das Suffix nicht angeben, übernimmt systemctl. service. Zum Beispiel sind netctl und netctl. service gleichwertig. Mount-Punkte werden automatisch in die entsprechende. mount-Einheit übersetzt. Zum Beispiel ist die Angabe von Haus gleichbedeutend mit home. mount. Ähnlich wie bei den Mount-Punkten werden die Geräte automatisch in die entsprechende Geräteeinheit übersetzt, weshalb devsda2 dem dev-sda2.device entspricht. Siehe man systemd. unit für Details. Hinweis: Einige Unit-Namen enthalten ein Vorzeichen (z. B. name string. service): Dies bedeutet, dass es sich um Instanzen einer Vorlageneinheit handelt, deren aktueller Dateiname nicht den String-Teil enthält (z. B. name. service). String wird als Instanzkennung bezeichnet. Und ähnelt einem Argument, das an die Vorlageneinheit übergeben wird, wenn es mit dem Befehl systemctl aufgerufen wird: In der Einheitsdatei wird es den i-Spezifizierer ersetzen. Um genauer zu sein, bevor man versucht, die name. suffix-Vorlageneinheit zu instanziieren, sucht systemd tatsächlich eine Einheit mit dem genauen Namestring. suffix-Dateinamen aus, obwohl durch Konvention ein solcher Zusammenstoß selten passiert, dh die meisten Unit-Dateien, die ein Schild enthalten, sind gemeint Vorlagen sein. Auch wenn eine Vorlageneinheit ohne Instanzkennung aufgerufen wird, wird es einfach fehlschlagen, da der i-Spezifizierer nicht ersetzt werden kann. Tipp: Die meisten der folgenden Befehle funktionieren auch, wenn mehrere Einheiten angegeben sind, siehe man systemctl für weitere Informationen. Der - Schalter kann in Verbindung mit Freigabe verwendet werden. Deaktivieren Und die Maske zu starten, zu stoppen oder zu maskieren sofort die Einheit anstatt nach dem nächsten Boot. Ein Paket kann Einheiten für verschiedene Zwecke anbieten. Wenn Sie gerade ein Paket installiert haben, kann pacman - Qql Paket grep - Fe. service - e. socket verwendet werden, um sie zu überprüfen und zu finden. Starten Sie sofort ein Gerät: Stoppen Sie sofort ein Gerät: Stellen Sie eine Einheit zum Neuladen der Konfiguration ein: Zeigen Sie den Status eines Gerätes an, auch wenn es läuft oder nicht: Überprüfen Sie, ob ein Gerät bereits aktiviert ist oder nicht: Aktivieren Sie ein Gerät, das gestartet werden soll Hochfahren . Deaktivieren Sie eine Einheit, um während des Startvorgangs nicht zu starten: Maskieren Sie eine Einheit, um es unmöglich zu starten: Zeigen Sie die manuelle Seite an, die mit einer Einheit verbunden ist (dies muss von der Einheitsdatei unterstützt werden): System neu laden. Scannen nach neuen oder geänderten Einheiten. Power Management Polkit ist notwendig für Power Management als unprivilegierter Benutzer. Wenn Sie sich in einer lokalen Systemd-Logind-Benutzersitzung befinden und keine andere Sitzung aktiv ist, werden die folgenden Befehle ohne Root-Berechtigungen funktionieren. Wenn nicht (z. B. weil ein anderer Benutzer in einem tty angemeldet ist), wird systemd automatisch Sie nach dem Root-Passwort fragen. Fahren Sie das System herunter und starten Sie es neu: Schalten Sie das System aus und schalten Sie es aus: Das System aussetzen: Setzen Sie das System in den Ruhezustand: Legen Sie das System in den Hybrid-Schlaf-Zustand (oder Suspend-to-Both): Schreiben von Einheiten-Dateien Die Syntax von systemd S Unit-Dateien ist inspiriert von XDG Desktop Entry Specification. Desktop-Dateien, die wiederum von Microsoft Windows. ini-Dateien inspiriert sind. Unit-Dateien werden von zwei Standorten geladen. Von der niedrigsten zur höchsten Priorität sind sie: usrlibsystemdsystem. Einheiten von installierten Paketen etcsystemdsystem zur Verfügung gestellt. Einheiten, die vom Systemadministrator installiert werden Hinweis: Die Lastpfade sind bei der Ausführung im Systemmodus völlig anders. Systemnummern dürfen nur ASCII-alphanumerische Zeichen, Unterstriche und Perioden enthalten. Alle anderen Zeichen müssen durch C-style x2d Escapes ersetzt werden. Siehe man systemd. unit und man systemd-escape für weitere informationen. Schauen Sie sich die Einheiten an, die von Ihren Paketen für Beispiele installiert wurden, sowie den kommentierten Beispielabschnitt von man systemd. service. Tipp: Die mitgelieferten Kommentare können auch in Unit-Dateien verwendet werden, aber nur in neuen Zeilen. Verwenden Sie keine endgültigen Kommentare nach Systemparametern oder das Gerät wird nicht aktiviert. Behandlungsabhängigkeiten mit systemd. Abhängigkeiten können durch die korrekte Gestaltung der Geräte-Dateien behoben werden. Der typischste Fall ist, dass die Einheit A die Einheit B benötigt, um zu laufen, bevor A gestartet wird. In diesem Fall fügen Sie Benötigt B und Nach B zu der Einheit Abschnitt von A. Wenn die Abhängigkeit optional ist, füge bitte B und B an B an. Beachten Sie, dass Wants and Requires nicht implizieren After. Bedeutet, dass, wenn After nicht angegeben ist, die beiden Einheiten parallel gestartet werden. Abhängigkeiten sind in der Regel auf Dienstleistungen und nicht auf Ziele gesetzt. Zum Beispiel wird network. target von jedem beliebigen Service gezogen, um Ihre Netzwerkschnittstellen zu konfigurieren und damit Ihre benutzerdefinierte Einheit zu bestellen, nachdem es ausreichend ist, da network. target sowieso gestartet wird. Service-Typen Beim Schreiben einer benutzerdefinierten Servicedatei gibt es verschiedene Start-up-Typen. Diese Einstellung wird mit dem Typ-Parameter im Service-Bereich gesetzt: Typesimple (default): systemd berücksichtigt den Service, der sofort gestartet werden soll. Der Prozess darf nicht gabeln. Verwenden Sie diesen Typ nicht, wenn andere Dienste auf diesem Service bestellt werden müssen, es sei denn, es ist eine Steckdose aktiviert. Artforking Systemd berücksichtigt, dass der Dienst gestartet wurde, sobald die Prozessgabeln und der Elternteil verlassen haben. Für klassische Dämonen verwenden diese Art, wenn Sie nicht wissen, dass es nicht notwendig ist. Sie sollten auch PIDFile angeben, so dass systemd den Hauptprozess verfolgen kann. Typeoneshot. Dies ist nützlich für Skripte, die einen einzelnen Job machen und dann beenden. Vielleicht möchten Sie auch RemainAfterExityes setzen, so dass systemd den Service nach dem Beenden des Prozesses noch als aktiv betrachtet. Tintenotifizieren Identisch mit typisimple. Aber mit der Voraussetzung, dass der Dämon ein Signal senden wird, wenn es fertig ist. Die Referenzimplementierung für diese Meldung erfolgt durch libsystemd-daemon. so. Typedbus Der Dienst gilt als bereit, wenn der angegebene Busname auf dem DBuss-Systembus erscheint. Entleeren Systemd verzögert die Ausführung der Service-Binärdatei, bis alle Aufträge versendet werden. Anders als dieses Verhalten ist sehr ähnlich zu Typesimple. Zur ausführlichen Erläuterung der Typ-Werte siehe die Manpage systemd. service (5). Bearbeiten von bereitgestellten Einheiten Um Konflikte mit pacman zu vermeiden, sollten die von Paketen bereitgestellten Dateien nicht direkt bearbeitet werden. Es gibt zwei sichere Möglichkeiten, eine Einheit zu modifizieren, ohne die ursprüngliche Datei zu berühren: Erstellen Sie eine neue Einheitsdatei, die die ursprüngliche Einheit überschreibt oder erstellen Sie Drop-In-Snippets, die oben auf der ursprünglichen Einheit angewendet werden. Bei beiden Methoden müssen Sie das Gerät nachträglich neu laden, um Ihre Änderungen zu übernehmen. Dies kann entweder durch Bearbeiten des Gerätes mit systemctl edit (das lädt das Gerät automatisch) oder durch erneutes Laden aller Einheiten mit: Tipp: Sie können systemd-delta verwenden, um zu sehen, welche Unit-Dateien wurden überschrieben oder erweitert und was genau geändert wurde . Verwenden Sie systemctl cat unit, um den Inhalt einer Unit-Datei und alle zugehörigen Drop-In-Snippets anzuzeigen. Die Syntax-Hervorhebung für Systemdatendateien innerhalb von Vim kann durch die Installation von vim-systemd aktiviert werden. Ersatzeinheitsdateien Um die Einheitsdatei usrlibsystemdsystem zu ersetzen. Erstellen Sie die Datei etcsystemdsystem Einheit und reenable das Gerät, um die Symlinks zu aktualisieren: Dies öffnet etcsystemdsystem Einheit in Ihrem Editor (Kopieren der installierten Version, wenn es noch nicht existiert) und automatisch lädt es, wenn Sie die Bearbeitung beenden. Hinweis: Pacman aktualisiert die Ersatzeinheitsdateien nicht, wenn die Originale aktualisiert werden, so dass diese Methode die Systemwartung schwieriger machen kann. Aus diesem Grund empfiehlt sich der nächste Ansatz. Drop-In-Dateien So erstellen Sie Drop-In-Dateien für die Unit-Datei usrlibsystemdsystem ein. Erstellen Sie das Verzeichnis etcsystemdsystem unit. d und platzieren Sie. conf-Dateien dort, um zu überschreiben oder neue Optionen hinzuzufügen. Systemd wird diese. conf-Dateien analysieren und sie auf die ursprüngliche Einheit anwenden. Der einfachste Weg, dies zu tun ist zu laufen: Dies öffnet die Datei etcsystemdsystem Einheit. doverride. conf in Ihrem Texteditor (erstellen Sie es, wenn nötig) und automatisch lädt das Gerät, wenn Sie fertig bearbeiten. Zur vendor-Version zurückkehren Um alle Änderungen an einem Gerät zurückzusetzen, das mit systemctl edit gemacht wird, tun Sie: Wenn Sie beispielsweise einfach eine zusätzliche Abhängigkeit zu einer Einheit hinzufügen möchten, können Sie folgende Datei erstellen: Als weiteres Beispiel, um den ExecStart zu ersetzen Richtlinie für eine Einheit, die nicht vom Typ oneshot ist. Erstellen Sie die folgende Datei: Beachten Sie, wie ExecStart gelöscht werden muss, bevor Sie neu zugewiesen werden 1. Dasselbe gilt für jedes Element, das mehrfach angegeben werden kann, z. B. OnCalendar für Timer. Ein weiteres Beispiel für den automatischen Neustart eines Dienstes: Grund: Unklar Beschreibung, Kopiengefüllter Inhalt (explizit erwähnt Fedora). (Diskussion in Talk: SystemdMake Abschnitt Ziele klarer) systemd verwendet Ziele, die einen ähnlichen Zweck wie Runlevels dienen, aber ein wenig anders wirken. Jedes Ziel wird anstelle von nummeriert benannt und soll einem bestimmten Zweck dienen, wobei die Möglichkeit besteht, dass mehrere gleichzeitig aktiv sind. Einige Ziele werden implementiert, indem sie alle Dienste eines anderen Ziels erben und zusätzliche Dienste hinzufügen. Es gibt Systemdargets, die die üblichen SystemVinit-Runlevels nachahmen, so dass Sie das Ziel mit dem vertrauten telinit RUNLEVEL-Befehl immer noch umschalten können. Aktuelle Ziele erhalten Nachfolgend sollte unter systemd statt Runlevel verwendet werden. Erstellen eines benutzerdefinierten Ziels Die Runlevels, die unter Sysvinit eine definierte Bedeutung hatten (d. h. 0, 1, 3, 5 und 6), haben eine 1: 1-Abbildung mit einem bestimmten Systemziel. Leider gibt es keinen guten Weg, um das gleiche für die benutzerdefinierten Runlevels wie 2 und 4 zu tun. Wenn Sie von denen Gebrauch machen, wird vorgeschlagen, dass Sie ein neues benanntes systemd Ziel als etcsystemdsystem Ihr Ziel machen, das einen der vorhandenen Runlevels nimmt Als eine Basis (Sie können auf usrlibsystemdsystemgraphical. target als Beispiel betrachten), machen Sie ein Verzeichnis etcsystemdsystem Ihr Ziel. wants. Und dann symlink die zusätzlichen Dienste von usrlibsystemdsystem, die Sie aktivieren möchten. Zieltabelle aktuelles Ziel ändern In Systemd-Targets werden über Zieleinheiten belichtet. Sie können sie so ändern: Dies ändert nur das aktuelle Ziel und hat keine Auswirkung auf den nächsten Start. Dies entspricht den Befehlen wie telinit 3 oder telinit 5 in Sysvinit. Ändern des Standardziels zum Booten in das Standardziel ist default. target. Die standardmäßig auf graphical. target vergeben wird (was etwa dem alten Runlevel 5 entspricht). Um das Standardziel beim Booten zu ändern, füge einen der folgenden Kernelparameter an deinen Bootloader an: systemd. unitmulti-user. target (was in etwa dem alten Runlevel 3 entspricht), systemd. unitrescue. target (was in etwa dem entspricht Alter Runlevel 1). Alternativ können Sie den Bootloader alleine verlassen und standard. target ändern. Dies kann mit systemctl erfolgen. Um das zuvor eingestellte default. target überschreiben zu können. Verwenden Sie die Kraft-Option: Die Wirkung dieses Befehls wird ausgegeben von systemctl ein Symlink auf das neue Standard-Ziel wird bei etcsystemdsystemdefault. target gemacht. Temporäre Dateien systemd-tmpfiles erstellt, löscht und reinigt flüchtige und temporäre Dateien und Verzeichnisse. Es liest Konfigurationsdateien in etctmpfiles. d und usrlibtmpfiles. d, um herauszufinden, welche Aktionen ausgeführt werden sollen. Konfigurationsdateien im früheren Verzeichnis haben Vorrang vor denen im letzteren Verzeichnis. Konfigurationsdateien werden in der Regel zusammen mit Service-Dateien bereitgestellt, und sie werden im Stil von usrlibtmpfiles. d Programm. conf benannt. Zum Beispiel erwartet der Samba-Daemon das Verzeichnis runsamba zu existieren und die richtigen Berechtigungen zu haben. Daher wird das Samba-Paket mit dieser Konfiguration ausgeliefert: Konfigurationsdateien können auch verwendet werden, um Werte in bestimmte Dateien beim Booten zu schreiben. Zum Beispiel, wenn Sie etcrc. local verwendet, um das Aufwecken von USB-Geräten mit Echo USBE gt procacpiwakeup zu deaktivieren. Sie können stattdessen die folgenden tmpfile verwenden: Siehe die Systemd-tmpfiles (8) und tmpfiles. d (5) man Seiten für Details. Hinweis: Diese Methode funktioniert möglicherweise nicht, um Optionen in sys einzustellen, da der systemd-tmpfiles-Setup-Dienst ausgeführt werden kann, bevor die entsprechenden Gerätemodule geladen werden. In diesem Fall können Sie überprüfen, ob das Modul einen Parameter für die Option hat, die Sie mit modinfo-Modul setzen möchten, und legen Sie diese Option mit einer Konfigurationsdatei in etcmodprobe. d fest. Andernfalls müssen Sie eine udev-Regel schreiben, um das entsprechende Attribut zu setzen, sobald das Gerät erscheint. Ein Timer ist eine Unit-Konfigurationsdatei, deren Name mit. timer endet und kodiert Informationen über einen Timer, der von systemd kontrolliert und überwacht wird. Für die zeitgesteuerte Aktivierung. Siehe systemdTimers. Da systemd ein Ersatz für System V init ist, ist es zuständig für die in etcfstab angegebenen Halterungen. In der Tat geht es über die üblichen fstab-Fähigkeiten hinaus und implementiert spezielle Mount-Optionen, die mit x-systemd vorangestellt sind. Siehe FstabAutomount mit Systemd für ein Beispiel der Automounting (Montage on-Demand) mit diesen Erweiterungen. Siehe 2 für die vollständige Dokumentation dieser Erweiterungen. Systemd hat ein eigenes Logging-System namens Journal, daher ist ein Syslog-Daemon nicht mehr erforderlich. Um das Protokoll zu lesen, verwenden Sie: In Arch Linux ist das Verzeichnis varlogjournal ein Teil des systemd-Pakets und das Journal (wenn Speicher auf auto in etcsystemdjournald. conf gesetzt ist) wird an varlogjournal schreiben. Wenn Sie oder ein Programm dieses Verzeichnis löschen, wird systemd es nicht automatisch neu erstellen und stattdessen seine Protokolle auf runsystemdjournal auf eine nicht-persistente Weise schreiben. Allerdings wird der Ordner neu erstellt, wenn Sie Storagepersistent setzen und systemctl neu starten systemd-journald (oder reboot). Systemd Journal klassifiziert Nachrichten nach Prioritätsstufe und Facility. Die Protokollierung entspricht dem klassischen Syslog-Protokoll (RFC 5424). Prioritätsstufe Ein Syslog-Schweregrad (in systemd genannt Priorität) wird verwendet, um die Bedeutung einer Nachricht zu markieren RFC 5424 Abschnitt 6.2.1. Also, nützliche Einrichtungen zu sehen: 0,1,3,4,9,10,15. Filterausgang journalctl ermöglicht es Ihnen, die Ausgabe nach bestimmten Feldern zu filtern. Seien Sie sich bewusst, dass, wenn es viele Meldungen zu zeigen oder zu filtern von großen Zeitspanne getan werden muss, die Ausgabe dieses Befehls kann für einige Zeit verzögert werden. Tipp: Während das Journal im Binärformat gespeichert ist, wird der Inhalt der gespeicherten Nachrichten nicht geändert. Dies bedeutet, dass es mit Saiten sichtbar ist. Zum Beispiel für die Wiederherstellung in einer Umgebung, die nicht installiert hat. Beispielbefehl: Alle Meldungen aus diesem Boot anzeigen: Allerdings interessiert man sich oft für Nachrichten, die nicht aus dem aktuellen, sondern aus dem vorherigen Boot stammen (z. B. wenn ein nicht behebbarer Systemabsturz stattgefunden hat). Dies ist möglich durch optionale Offset-Parameter des - b-Flags: journalctl - b -0 zeigt Meldungen aus dem aktuellen Boot, journalctl - b -1 aus dem vorherigen Boot, journalctl - b -2 ab dem zweiten vorherigen und so weiter. Siehe man 1 journalctl für ausführliche Beschreibung, die Semantik ist viel mächtiger. Zeige alle Nachrichten vom Datum (und der optionalen Zeit): Zeige alle Nachrichten seit 20 Minuten: Neue Nachrichten anzeigen: Alle Nachrichten von einer bestimmten ausführbaren Datei anzeigen: Alle Nachrichten nach einem bestimmten Prozess anzeigen: Alle Nachrichten einer bestimmten Einheit anzeigen: Kernelring anzeigen Puffer: Nur Fehler-, Kritik - und Alarm-Prioritätsmeldungen anzeigen Zahlen können auch verwendet werden, journalctl - p 3..1. Wenn ein einziges Ziffernwort verwendet wurde, war auch journalctl - p 3 - alle höheren Prioritätsstufen enthalten. Zeigen Sie auth. log-Äquivalent durch Filtern auf syslog-Einrichtung: Siehe man 1 journalctl. Mann 7 systemd. journal-Felder. Oder Lennarts Blog-Post für Details. Tipp: Standardmäßig schneidet journalctl Zeilen länger als die Bildschirmbreite, aber in manchen Fällen kann es besser sein, das Wrapping anstelle der Trunkierung zu aktivieren. Dies kann durch die Umgebungsvariable SYSTEMDLESS gesteuert werden. Die Optionen enthält, die an weniger (der Standard-Pager) übergeben werden und standardmäßig auf FRSXMK (siehe man 1 weniger und man 1 journalctl für Details). Durch das Weglassen der S-Option wird die Ausgabe anstatt abgeschnitten. Zum Beispiel starten Sie journalctl wie folgt: Wenn Sie dieses Verhalten als Standard setzen möchten, exportieren Sie die Variable aus Journal Größe Limit Wenn das Journal persistent (nicht-flüchtig) ist, ist seine Größenbeschränkung auf einen Standardwert von 10 der Größe des zugrunde liegenden Dateisystems, aber mit 4 GiB verschlossen. Zum Beispiel, mit varlogjournal auf einer 20 GiB-Partition, können Journal-Daten bis zu 2 GiB nehmen. Auf einer 50-GiB-Trennwand wäre es bei 4 GiB max. Die maximale Größe des persistenten Journals kann durch Unkommentieren und Ändern der folgenden gesteuert werden: Es ist auch möglich, den Drop-In-Snippets-Konfigurations-Override-Mechanismus zu verwenden, anstatt die globale Konfigurationsdatei zu bearbeiten. In diesem Fall vergessen Sie nicht, die Overrides unter den Journal-Header zu platzieren: Siehe man journald. conf für mehr Info. Saubere Journaldateien manuell Journaldateien können global aus dem varlogjournal entfernt werden, z. B. Rm Oder kann nach verschiedenen Kriterien mit journalctl getrimmt werden. Beispiele: archivierte Journaldateien entfernen, bis der Speicherplatz, den sie verwenden, unter 100M fällt: Alle Journaldateien enthalten keine Daten, die älter als 2 Wochen sind. Sehen Sie man journalctl für mehr Info. Journald in Verbindung mit syslog Kompatibilität mit einer klassischen, nicht-journald bewussten Syslog-Implementierung kann bereitgestellt werden, indem wir alle Nachrichten über den Socket Runsystemdjournalsyslog weiterleiten lassen. Um den Syslog-Daemon mit dem Journal zu arbeiten, muss er an diesen Socket anstelle von devlog (offizielle Ankündigung) binden. Die Standard-journald. conf für die Weiterleitung an den Socket ist ForwardToSyslogno, um System-Overhead zu vermeiden, da rsyslog oder syslog-ng die Nachrichten aus dem Journal selbst ziehen. Vorwärts journald to devtty12 Erstellen Sie ein Drop-In-Verzeichnis etcsystemdjournald. conf. d und erstellen Sie eine Datei fw-tty12.conf in es: Geben Sie ein anderes Journal zu sehen Es kann eine Notwendigkeit, die Protokolle eines anderen Systems, das tot ist in der Wasser, wie das Booten von einem Live-System, um ein Produktionssystem zu erholen. In einem solchen Fall kann man die Platte in z. B. Mnt. Und spezifizieren Sie den Journalpfad über - D - Verzeichnis. So wie: Tipps und Tricks Aktivieren Sie installierte Einheiten standardmäßig Grund: Wie funktioniert es mit instanziierten Einheiten (Diskussion in Talk: Systemd) Arch Linux wird mit usrlibsystemdsystem-preset99-default. preset mit disable erstellt. Dies führt dazu, dass systemctl Preset alle Einheiten standardmäßig deaktiviert, so dass bei der Installation eines neuen Pakets der Benutzer das Gerät manuell aktivieren muss. Wenn dieses Verhalten nicht erwünscht ist, erstellen Sie einfach einen Symlink von etcsystemdsystem-preset99-default. preset zu devnull, um die Konfigurationsdatei zu überschreiben. Dies führt dazu, dass systemctl-Voreinstellung alle Einheiten aktiviert, die unabhängig von der Einheit, die in einer anderen Datei in einem System-Preset-Konfigurationsverzeichnisse angegeben ist Benutzereinheiten sind nicht betroffen. Weitere Informationen finden Sie auf der Manpage für systemd. preset. Hinweis: Wenn Sie alle Einheiten standardmäßig aktivieren, können Probleme mit Paketen auftreten, die zwei oder mehrere sich gegenseitig ausschließende Einheiten enthalten. Systemctl preset ist so konzipiert, dass es von Distributionen und Spins oder Systemadministratoren verwendet wird. In dem Fall, in dem zwei gegensätzliche Einheiten aktiviert würden, sollten Sie explizit angeben, welche in einer voreingestellten Konfigurationsdatei deaktiviert werden soll, wie in der Manpage für systemd. preset angegeben. Sandboxing-Anwendungsumgebungen Eine Einheitsdatei kann als Sandbox erstellt werden, um Anwendungen und deren Prozesse in einer gehärteten virtuellen Umgebung zu isolieren. Systemd nutzt Namespaces. Weiß-Blacklisting von Fähigkeiten. Und Kontrollgruppen zu Containerprozessen durch eine umfangreiche Ausführungsumgebungskonfiguration. Die Erweiterung einer vorhandenen Systemdatendatei mit Applikationssandboxen erfordert typischerweise Test-und-Fehler-Tests, begleitet von der großzügigen Verwendung von Strace. Stderr und journalctl Fehlerprotokollierung und Ausgabeeinrichtungen. Möglicherweise möchten Sie zuerst die Upstream-Dokumentation für bereits durchgeführte Tests suchen, um die Testversuche zu erstellen. Einige Beispiele dafür, wie Sandboxing mit Systemd eingesetzt werden kann: CapabilityBoundingSet definiert einen Whitelist-Satz von erlaubten Fähigkeiten, kann aber auch verwendet werden, um eine bestimmte Fähigkeit für eine Einheit zu verknüpfen. Die CAPSYSADM-Fähigkeit, zum Beispiel, die eines der Ziele einer sicheren Sandbox sein sollte. CapabilityBoundingSet CAPSYSADM UnboundSandboxing zeigt ein umfangreiches Beispiel für Systemfunktionen für Sandboxen. Fehlerbehebung Untersuchung von Systemfehlern Als Beispiel werden wir einen Fehler mit systemd-modules-load service untersuchen: 1. Ermöglicht es uns, die Systemdienste zu finden, die nicht starten können: 2. Ok, wir haben ein Problem mit systemd-modules-load service gefunden. Wir wollen mehr wissen: Wenn die Prozess-ID nicht aufgeführt ist, starten Sie einfach den fehlgeschlagenen Dienst mit systemctl restart systemd-modules-load 3. Jetzt haben wir die Prozess-ID (PID), um diesen Fehler in der Tiefe zu untersuchen. Geben Sie den folgenden Befehl mit der aktuellen Prozess-ID ein (hier: 15630): 4. Wir sehen, dass einige der Kernel-Modul-Konfigurationen falsche Einstellungen haben. Deshalb schauen wir uns diese Einstellungen in etcmodules-load. d an. 5. Das fehlgeschlagen zu finden Modul Blacklist usblp Fehlermeldung könnte auf eine falsche Einstellung innerhalb von blacklist. conf bezogen werden. Lässt es mit dem Einfügen eines Nachlaufs vor jeder Option, die wir über Schritt 3: 6 gefunden haben, deaktivieren. Versuchen Sie nun, systemd-modules-load zu starten. Wenn es erfolgreich war, sollte das nichts veranlassen. Wenn Sie einen Fehler sehen, gehen Sie zurück zu Schritt 3 und verwenden Sie die neue PID für die Lösung der Fehler links. Wenn alles in Ordnung ist, können Sie sicherstellen, dass der Service erfolgreich gestartet wurde: Oft können Sie diese Art von Problemen wie oben gezeigt lösen. Für weitere Untersuchungen siehe Diagnose Bootprobleme. Die Diagnose von Bootproblemen hat mehrere Möglichkeiten, Probleme mit dem Bootvorgang zu diagnostizieren. Siehe Boot-Debugging und die systeme Debugging-Dokumentation. Diagnose von Problemen mit einem bestimmten Dienst Grund: Dies kann nicht fehlen alle Fehler wie fehlende Bibliotheken. (Diskutieren Sie im Benutzergespräch: AlucrydPlex) Wenn einige Systemdienste missbraucht werden und Sie mehr Informationen darüber erhalten möchten, was los ist, setzen Sie die Umgebungsvariable SYSTEMDLOGLEVEL auf Debugging. Zum Beispiel, um den systemd-networkd-Daemon im Debug-Modus auszuführen: Oder, äquivalent, ändern Sie die Service-Datei vorübergehend für das Sammeln von genügend Ausgabe. Zum Beispiel: Wenn Debug-Informationen langfristig benötigt werden, füge die Variable die reguläre Weise hinzu. Shutdownreboot dauert schrecklich lange Wenn der Shutdown-Prozess eine sehr lange Zeit dauert (oder zu frieren scheint), ist wahrscheinlich ein Service, der nicht aufhört, schuld. Systemd wartet einige Zeit für jeden Dienst zu beenden, bevor er versucht, es zu töten. To find out if you are affected, see this article. Short lived processes do not seem to log any output If journalctl - u foounit does not show any output for a short lived service, look at the PID instead. For example, if systemd-modules-load. service fails, and systemctl status systemd-modules-load shows that it ran as PID 123, then you might be able to see output in the journal for that PID, i. e. journalctl - b PID61123. Metadata fields for the journal such as SYSTEMDUNIT and COMM are collected asynchronously and rely on the proc directory for the process existing. Fixing this requires fixing the kernel to provide this data via a socket connection, similar to SCMCREDENTIALS. Boot time increasing over time After using systemd-analyze a number of users have noticed that their boot time has increased significantly in comparison with what it used to be. After using systemd-analyze blame NetworkManager is being reported as taking an unusually large amount of time to start. The problem for some users has been due to varlogjournal becoming too large. This may have other impacts on performance, such as for systemctl status or journalctl. As such the solution is to remove every file within the folder (ideally making a backup of it somewhere, at least temporarily) and then setting a journal file size limit as described in Journal size limit. systemd-tmpfiles-setup. service fails to start at boot Starting with systemd 219, usrlibtmpfiles. dsystemd. conf specifies ACL attributes for directories under varlogjournal and, therefore, requires ACL support to be enabled for the filesystem the journal resides on. See Access Control ListsEnabling ACL for instructions on how to enable ACL on the filesystem that houses varlogjournal. systemctl enable fails for symlinks in etcsystemdsystem If etcsystemdsystem foo. service is a symlink and systemctl enable foo. service is run, it will fail with this error: This is a design choice of systemd. As a workaround, enabling by absolute path works: dependent services are not started when starting a service manually One (in)famous example is libvirtd. service which needs the virtlogd. socket to function properly. The dependencies in usrlibsystemdsystemlibvirtd. service are defined as This only defines the necessarydependent sockets to be enabled services(i. e. as autostart), too - but does not start them whenever the DISABLED ( non-autostarting) service ist started manually e. g. by running systemctl start libvirtd Thus the correct () way to manually start a service with dependent subservices once (instead of at each start of the system) probably is systemd version printed on boot is not the same as installed package version You need to regenerate your initramfs and the versions should match. Tip: A pacman hook can be used to automatically regenerate the initramfs every time systemd is upgraded. See this forum thread and PacmanHooks. Binary Options Trading with IQ Option What is binary options First of all, it is a highly profitable online trading tool that allows you to estimate the amount of potential profit in advance. Der Binäroptionshandel kann in kürzester Zeit erhebliche Einnahmen erzielen. Händler kaufen Optionen zu einem vorgegebenen Preis. Der Online-Handel kann rentabel sein, wenn der Händler die Marktbewegung korrekt identifiziert. Vorteile von Binär-Optionen Trading ist ein Hochrisiko-Bereich, wo man entweder doppelt oder sogar verdreifachen Sie Ihr Kapital oder verlieren es in ein paar Minuten. Binäre Optionen haben mehrere Vorteile, die es ermöglichen, mehr Gewinn mit vorhersehbaren Risiken zu bekommen. Eine Option mit einem festen Gewinn unterscheidet sich vom konventionellen Handel. Anfänger können binäre Optionen mit IQ-Option genauso wie erfahrene Händler handeln. Der gesamte Prozess ist voll automatisiert. Binäre Optionen Trader sind sich ihrer Gewinne im Voraus bewusst ihr Hauptziel ist es, die richtige Richtung der Marktbewegung zu wählen. Sie müssen aus zwei Richtungen nur nach oben oder unten wählen. Zwei Arten von Online Trading Die IQ Option Plattform ermöglicht es Ihnen, binäre Optionen in zwei grundlegenden Modi zu handeln. Praxis-Account ist für die Ausbildung. Um ein Praxis-Konto zu öffnen und um Ihre Kraft zu testen, müssen Sie nicht einmal eine Einzahlung machen. Für echten Handel, müssen Sie nur 10 einzahlen. Dies sorgt für einen Bonus von bis zu 36. Bei der Eröffnung eines Kontos für einen größeren Betrag (ab 3.000) steht Ihnen ein persönlicher Account Manager zur Verfügung. Trading-Operationen auf dieser Website angeboten werden, können als High-Risk Trading Operations und ihre Ausführung kann sehr riskant sein. Der Kauf von Finanzinstrumenten oder die Nutzung von Dienstleistungen, die auf der Website angeboten werden, kann zu erheblichen Verlusten oder sogar zu einem Totalverlust aller Fonds auf Ihrem Konto führen. Sie erhalten beschränkte, nicht ausschließliche, nicht übertragbare Rechte, die auf dieser Website zur Verfügung gestellten IPs für persönliche und nichtkommerzielle Zwecke in Bezug auf die nur auf der Website angebotenen Dienste zu nutzen. Die Gesellschaft handelt außerhalb der Russischen Föderation. Eu. iqoption ist im Besitz und betrieben von Iqoption Europe Ltd. IQ Option, 20132017 Passwort Wiederherstellung Informationen wurde erfolgreich an Ihre Mail geschickt Die Registrierung ist derzeit nicht verfügbar in der Russischen Föderation. If you think youre seeing this message by mistake, please contact supportiqoption. We hope you find this tutorial helpful. In addition to guides like this one, we provide simple cloud infrastructure for developers. Learn more rarr How To Use Journalctl to View and Manipulate Systemd Logs Introduction Some of the most compelling advantages of systemd are those involved with process and system logging. When using other tools, logs are usually dispersed throughout the system, handled by different daemons and processes, and can be fairly difficult to interpret when they span multiple applications. Systemd attempts to address these issues by providing a centralized management solution for logging all kernel and userland processes. The system that collects and manages these logs is known as the journal. The journal is implemented with the journald daemon, which handles all of the messages produced by the kernel, initrd, services, etc. In this guide, we will discuss how to use the journalctl utility, which can be used to access and manipulate the data held within the journal. General Idea One of the impetuses behind the systemd journal is to centralize the management of logs regardless of where the messages are originating. Since much of the boot process and service management is handled by the systemd process, it makes sense to standardize the way that logs are collected and accessed. The journald daemon collects data from all available sources and stores them in a binary format for easy and dynamic manipulation. This gives us a number of significant advantages. By interacting with the data using a single utility, administrators are able to dynamically display log data according to their needs. This can be as simple as viewing the boot data from three boots ago, or combining the log entries sequentially from two related services to debug a communication issue. Storing the log data in a binary format also means that the data can be displayed in arbitrary output formats depending on what you need at the moment. For instance, for daily log management you may be used to viewing the logs in the standard syslog format, but if you decide to graph service interruptions later on, you can output each entry as a JSON object to make it consumable to your graphing service. Since the data is not written to disk in plain text, no conversion is needed when you need a different on-demand format. The systemd journal can either be used with an existing syslog implementation, or it can replace the syslog functionality, depending on your needs. While the systemd journal will cover most administrators logging needs, it can also complement existing logging mechanisms. For instance, you may have a centralized syslog server that you use to compile data from multiple servers, but you also may wish to interleave the logs from multiple services on a single system with the systemd journal. You can do both of these by combining these technologies. Setting the System Time One of the benefits of using a binary journal for logging is the ability to view log records in UTC or local time at will. By default, systemd will display results in local time. Because of this, before we get started with the journal, we will make sure the timezone is set up correctly. The systemd suite actually comes with a tool called timedatectl that can help with this. First, see what timezones are available with the list-timezones option: This will list the timezones available on your system. When you find the one that matches the location of your server, you can set it by using the set-timezone option: To ensure that your machine is using the correct time now, use the timedatectl command alone, or with the status option. The display will be the same: The first line should display the correct time. Basic Log Viewing To see the logs that the journald daemon has collected, use the journalctl command. When used alone, every journal entry that is in the system will be displayed within a pager (usually less ) for you to browse. The oldest entries will be up top: You will likely have pages and pages of data to scroll through, which can be tens or hundreds of thousands of lines long if systemd has been on your system for a long while. This demonstrates how much data is available in the journal database. The format will be familiar to those who are used to standard syslog logging. However, this actually collects data from more sources than traditional syslog implementations are capable of. It includes logs from the early boot process, the kernel, the initrd, and application standard error and out. These are all available in the journal. You may notice that all of the timestamps being displayed are local time. This is available for every log entry now that we have our local time set correctly on our system. All of the logs are displayed using this new information. If you want to display the timestamps in UTC, you can use the --utc flag: Journal Filtering by Time While having access to such a large collection of data is definitely useful, such a large amount of information can be difficult or impossible to inspect and process mentally. Because of this, one of the most important features of journalctl is its filtering options. Displaying Logs from the Current Boot The most basic of these which you might use daily, is the - b flag. This will show you all of the journal entries that have been collected since the most recent reboot. This will help you identify and manage information that is pertinent to your current environment. In cases where you arent using this feature and are displaying more than one day of boots, you will see that journalctl has inserted a line that looks like this whenever the system went down: This can be used to help you logically separate the information into boot sessions. Past Boots While you will commonly want to display the information from the current boot, there are certainly times when past boots would be helpful as well. The journal can save information from many previous boots, so journalctl can be made to display information easily. Some distributions enable saving previous boot information by default, while others disable this feature. To enable persistent boot information, you can either create the directory to store the journal by typing: Or you can edit the journal configuration file: Under the Journal section, set the Storage option to persistent to enable persistent logging: When saving previous boots is enabled on your server, journalctl provides some commands to help you work with boots as a unit of division. To see the boots that journald knows about, use the --list-boots option with journalctl : This will display a line for each boot. The first column is the offset for the boot that can be used to easily reference the boot with journalctl. If you need an absolute reference, the boot ID is in the second column. You can tell the time that the boot session refers to with the two time specifications listed towards the end. To display information from these boots, you can use information from either the first or second column. For instance, to see the journal from the previous boot, use the -1 relative pointer with the - b flag: You can also use the boot ID to call back the data from a boot: Time Windows While seeing log entries by boot is incredibly useful, often you may wish to request windows of time that do not align well with system boots. This may be especially true when dealing with long-running servers with significant uptime. You can filter by arbitrary time limits using the --since and --until options, which restrict the entries displayed to those after or before the given time, respectively. The time values can come in a variety of formats. For absolute time values, you should use the following format: For instance, we can see all of the entries since January 10th, 2015 at 5:15 PM by typing: If components of the above format are left off, some defaults will be applied. For instance, if the date is omitted, the current date will be assumed. If the time component is missing, 00:00:00 (midnight) will be substituted. The seconds field can be left off as well to default to 00: The journal also understands some relative values and named shortcuts. For instance, you can use the words yesterday, today, tomorrow, or now. You do relative times by prepending - or to a numbered value or using words like ago in a sentence construction. To get the data from yesterday, you could type: If you received reports of a service interruption starting at 9:00 AM and continuing until an hour ago, you could type: As you can see, its relatively easy to define flexible windows of time to filter the entries you wish to see. Filtering by Message Interest We learned above some ways that you can filter the journal data using time constraints. In this section well discuss how to filter based on what service or component you are interested in. The systemd journal provides a variety of ways of doing this. Perhaps the most useful way of filtering is by the unit you are interested in. We can use the - u option to filter in this way. For instance, to see all of the logs from an Nginx unit on our system, we can type: Typically, you would probably want to filter by time as well in order to display the lines you are interested in. For instance, to check on how the service is running today, you can type: This type of focus becomes extremely helpful when you take advantage of the journals ability to interleave records from various units. For instance, if your Nginx process is connected to a PHP-FPM unit to process dynamic content, you can merge the entries from both in chronological order by specifying both units: This can make it much easier to spot the interactions between different programs and debug systems instead of individual processes. By Process, User, or Group ID Some services spawn a variety of child processes to do work. If you have scouted out the exact PID of the process you are interested in, you can filter by that as well. To do this we can filter by specifying the PID field. For instance if the PID were interested in is 8088, we could type: At other times, you may wish to show all of the entries logged from a specific user or group. This can be done with the UID or GID filters. For instance, if your web server runs under the www-data user, you can find the user ID by typing: Afterwards, you can use the ID that was returned to filter the journal results: The systemd journal has many fields that can be used for filtering. Some of those are passed from the process being logged and some are applied by journald using information it gathers from the system at the time of the log. The leading underscore indicates that the PID field is of the latter type. The journal automatically records and indexes the PID of the process that is logging for later filtering. You can find out about all of the available journal fields by typing: We will be discussing some of these in this guide. For now though, we will go over one more useful option having to do with filtering by these fields. The - F option can be used to show all of the available values for a given journal field. For instance, to see which group IDs the systemd journal has entries for, you can type: This will show you all of the values that the journal has stored for the group ID field. This can help you construct your filters. By Component Path We can also filter by providing a path location. If the path leads to an executable, journalctl will display all of the entries that involve the executable in question. For instance, to find those entries that involve the bash executable, you can type: Usually, if a unit is available for the executable, that method is cleaner and provides better info (entries from associated child processes, etc). Sometimes, however, this is not possible. Displaying Kernel Messages Kernel messages, those usually found in dmesg output, can be retrieved from the journal as well. To display only these messages, we can add the - k or --dmesg flags to our command: By default, this will display the kernel messages from the current boot. You can specify an alternative boot using the normal boot selection flags discussed previously. For instance, to get the messages from five boots ago, you could type: By Priority One filter that system administrators often are interested in is the message priority. While it is often useful to log information at a very verbose level, when actually digesting the available information, low priority logs can be distracting and confusing. You can use journalctl to display only messages of a specified priority or above by using the - p option. This allows you to filter out lower priority messages. For instance, to show only entries logged at the error level or above, you can type: This will show you all messages marked as error, critical, alert, or emergency. The journal implements the standard syslog message levels. You can use either the priority name or its corresponding numeric value. In order of highest to lowest priority, these are: The above numbers or names can be used interchangeably with the - p option. Selecting a priority will display messages marked at the specified level and those above it. Modifying the Journal Display Above, we demonstrated entry selection through filtering. There are other ways we can modify the output though. We can adjust the journalctl display to fit various needs. Truncate or Expand Output We can adjust how journalctl displays data by telling it to shrink or expand the output. By default, journalctl will show the entire entry in the pager, allowing the entries to trail off to the right of the screen. This info can be accessed by pressing the right arrow key. If youd rather have the output truncated, inserting an ellipsis where information has been removed, you can use the --no-full option: You can also go in the opposite direction with this and tell journalctl to display all of its information, regardless of whether it includes unprintable characters. We can do this with the - a flag: Output to Standard Out By default, journalctl displays output in a pager for easier consumption. If you are planning on processing the data with text manipulation tools, however, you probably want to be able to output to standard output. You can do this with the --no-pager option: This can be piped immediately into a processing utility or redirected into a file on disk, depending on your needs. Output Formats If you are processing journal entries, as mentioned above, you most likely will have an easier time parsing the data if it is in a more consumable format. Luckily, the journal can be displayed in a variety of formats as needed. You can do this using the - o option with a format specifier. For instance, you can output the journal entries in JSON by typing: This is useful for parsing with utilities. You could use the json-pretty format to get a better handle on the data structure before passing it off to the JSON consumer: The following formats can be used for display: cat . Displays only the message field itself. export . A binary format suitable for transferring or backing up. json . Standard JSON with one entry per line. json-pretty . JSON formatted for better human-readability json-sse . JSON formatted output wrapped to make add server-sent event compatible short . The default syslog style output short-iso . The default format augmented to show ISO 8601 wallclock timestamps. short-monotonic . The default format with monotonic timestamps. short-precise . The default format with microsecond precision verbose . Shows every journal field available for the entry, including those usually hidden internally. These options allow you to display the journal entries in the whatever format best suits your current needs. Active Process Monitoring The journalctl command imitates how many administrators use tail for monitoring active or recent activity. This functionality is built into journalctl. allowing you to access these features without having to pipe to another tool. Displaying Recent Logs To display a set amount of records, you can use the - n option, which works exactly as tail - n . By default, it will display the most recent 10 entries: You can specify the number of entries youd like to see with a number after the - n : Following Logs To actively follow the logs as they are being written, you can use the - f flag. Again, this works as you might expect if you have experience using tail - f : Journal Maintenance You may be wondering about the cost is of storing all of the data weve seen so far. Furthermore, you may be interesting in cleaning up some older logs and freeing up space. Finding Current Disk Usage You can find out the amount of space that the journal is currently occupying on disk by using the --disk-usage flag: Deleting Old Logs If you wish to shrink your journal, you can do that in two different ways (available with systemd version 218 and later). If you use the --vacuum-size option, you can shrink your journal by indicating a size. This will remove old entries until the total journal space taken up on disk is at the requested size: Another way that you can shrink the journal is providing a cutoff time with the --vacuum-time option. Any entries beyond that time are deleted. This allows you to keep the entries that have been created after a specific time. For instance, to keep entries from the last year, you can type: Limiting Journal Expansion You can configure your server to place limits on how much space the journal can take up. This can be done by editing the etcsystemdjournald. conf file. The following items can be used to limit the journal growth: SystemMaxUse . Specifies the maximum disk space that can be used by the journal in persistent storage. SystemKeepFree . Specifies the amount of space that the journal should leave free when adding journal entries to persistent storage. SystemMaxFileSize . Controls how large individual journal files can grow to in persistent storage before being rotated. RuntimeMaxUse . Specifies the maximum disk space that can be used in volatile storage (within the run filesystem). RuntimeKeepFree . Specifies the amount of space to be set aside for other uses when writing data to volatile storage (within the run filesystem). RuntimeMaxFileSize . Specifies the amount of space that an individual journal file can take up in volatile storage (within the run filesystem) before being rotated. By setting these values, you can control how journald consumes and preserves space on your server. Conclusion As you can see, the systemd journal is incredibly useful for collecting and managing your system and application data. Most of the flexibility comes from the extensive metadata automatically recorded and the centralized nature of the log. The journalctl command makes it easy to take advantage of the advanced features of the journal and to do extensive analysis and relational debugging of different application components. Almost there Report a Bug
No comments:
Post a Comment