.\" -*- coding: UTF-8 -*- '\" t .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH SYSTEMD\-ANALYZE 1 "" "systemd 247" systemd\-analyze .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" ----------------------------------------------------------------- .\" * Define some portability stuff .\" ----------------------------------------------------------------- .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" http://bugs.debian.org/507673 .\" http://lists.gnu.org/archive/html/groff/2009-02/msg00013.html .\" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .\" ----------------------------------------------------------------- .\" * set default formatting .\" ----------------------------------------------------------------- .\" disable hyphenation .nh .\" disable justification (adjust text to left margin only) .ad l .\" ----------------------------------------------------------------- .\" * MAIN CONTENT STARTS HERE * .\" ----------------------------------------------------------------- .SH BEZEICHNUNG systemd\-analyze \- Systemverwalter analysieren und auf Fehler überprüfen .SH ÜBERSICHT .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] [Zeit] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] blame .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] critical\-chain [\fIUNIT\fP…] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] dump .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] plot [>Datei\&.svg] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] dot [\fIMUSTER\fP…] [>Datei\&.dot] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] unit\-paths .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] exit\-status [\fISTATUS\fP…] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] capability [\fICAPABILITY\fP…] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] condition \fIBEDINGUNG\fP… .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] syscall\-filter [\fIGRUPPE\fP…] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] calendar \fISPEZ\fP… .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] timestamp \fIZEITSTEMPEL\fP… .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] timespan \fISPANNE\fP… .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] cat\-config \fINAME\fP|\fIPFAD\fP… .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] verify [\fIDATEI\fP…] .HP \w'\fBsystemd\-analyze\fR\ 'u \fBsystemd\-analyze\fP [OPTIONEN…] security \fIUNIT\fP… .SH BESCHREIBUNG .PP \fBsystemd\-analyze\fP kann zur Bestimmung der Systemstartleistungsstatistik benutzt werden\&. Es kann Status\- und Nachverfolgungsinformationen aus dem System\- und Diensteverwalter abrufen und die Korrektheit von Unit\-Dateien überprüfen\&. Es wird auch dazu verwandt, auf besondere Funktionen zuzugreifen, die für fortgeschrittene Systemverwalterfehlersuche nützlich sind\&. .PP Falls kein Befehl übergeben wird, wird \fBsystemd\-analyze time\fP impliziert\&. .SS "systemd\-analyze time" .PP Dieser Befehl gibt die im Kernel verbrachte Zeit, bevor der Anwendungsbereich erreicht wurde, die Zeit, die in der anfänglichen RAM\-Platte (Initrd), bevor die normale Systemanwendungsebene erreicht wurde und die Zeit, die die normale Systemanwendungsebene zur Initialisierung benötigte, aus\&. Beachten Sie, dass diese Messungen einfach die Zeit zu dem Punkt messen, an dem alle Systemdienste gestartet wurden, aber nicht notwendigerweise bis sie ihre Initialisierung abgeschlossen hatten oder die Platte im Leerlauf war\&. .PP \fBBeispiel\ \&1.\ \&Anzeigen, wie lange ein Systemstart brauchte\fP .sp .if n \{\ .RS 4 .\} .nf # in einem Container $ systemd\-analyze time Startup finished in 296ms (userspace) multi\-user\&.target reached after 275ms in userspace # in einer echten Maschine $ systemd\-analyze time Startup finished in 2\&.584s (kernel) + 19\&.176s (initrd) + 47\&.847s (userspace) = 1min 9\&.608s multi\-user\&.target reached after 47\&.820s in userspace .fi .if n \{\ .RE .\} .SS "systemd\-analyze blame" .PP Dieser Befehl gibt eine Liste aller laufenden Units, sortiert nach der Initialisierungszeitdauer, aus\&. Diese Informationen können zur Optimierung der Systemstartzeit verwandt werden\&. Beachten Sie, dass die Ausgabe irreführend sein kann, da die Initialisierung eines Dienstes einfach deshalb langsam sein kann, da sie auf den Abschluss der Initialisierung eines anderen Dienstes wartet\&. Beachten Sie auch: \fBsystemd\-analyze blame\fP zeigt keine Ergebnisse für Dienste mit \fIType=simple\fP an, da Systemd solche Dienste als sofort gestartet betrachtet und daher keine Messungen der Initialisierungsverzögerungen erfolgen können\&. Beachten Sie auch, dass dieser Befehl nur die Zeit anzeigt, die die Units für das Hochfahren benötigten, er zeigt nicht an, wie lange sich die Units in der Ausführungswarteschlange befanden\&. Insbesondere zeigt er die Zeit, die die Units im Zustand »activating« verbrachten; dieser Zustand ist für Units wie Geräte\-Units nicht definiert, die direkt von »inactive« nach »active« übergehen\&. Dieser Befehl gibt daher den Eindruck der Leistung von Programmcode, kann aber nicht die durch das Warten auf Hardware und ähnliche Ereignisse verursachte Latenz genau wiedergeben\&. .PP \fBBeispiel\ \&2.\ \&Zeigt, welche Units beim Systemstart die meiste Zeit verbrauchten\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze blame 32\&.875s pmlogger\&.service 20\&.905s systemd\-networkd\-wait\-online\&.service 13\&.299s dev\-vda1\&.device \&.\&.\&. 23ms sysroot\&.mount 11ms initrd\-udevadm\-cleanup\-db\&.service 3ms sys\-kernel\-config\&.mount .fi .if n \{\ .RE .\} .SS "systemd\-analyze critical\-chain [\fIUNIT\fP\fR…]\fP" .PP Dieser Befehl gibt einen Baum der zeitkritischen Unit\-Kette (für jede der angegebenen \fIUNIT\fPs oder andernfalls für das Standardziel) aus\&. Die Zeit, nach der die Unit aktiv oder gestartet ist, wird nach dem Zeichen »@« ausgegeben\&. Die Zeit, die die Unit zum Starten benötigt, wird nach dem Zeichen »+« ausgegeben\&. Beachten Sie, dass die Ausgabe irreführend sein kann, da die Initialisierung von Diensten abhängig von der Aktivierung eines Sockets sein kann und da die Units parallel ausgeführt werden\&. Dies berücksichtigt auch ähnlich zu dem Befehl \fBblame\fP nur die Zeit, die die Unit im Zustand »activating« verbringt und deckt daher Units nicht ab, die niemals durch den Zustand »inactive« laufen (wie beispielsweise Geräte\-Units, die direkt von »inactive« zu »active« übergehen)\&. Desweiteren zeigt es keine Informationen über Aufträge an (und insbesondere über Aufträge, die eine Zeitüberschreitung erlebten)\&. .PP \fBBeispiel\ \&3.\ \&systemd\-analyze critical\-chain\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze critical\-chain multi\-user\&.target @47\&.820s └─pmie\&.service @35\&.968s +548ms └─pmcd\&.service @33\&.715s +2\&.247s └─network\-online\&.target @33\&.712s └─systemd\-networkd\-wait\-online\&.service @12\&.804s +20\&.905s └─systemd\-networkd\&.service @11\&.109s +1\&.690s └─systemd\-udevd\&.service @9\&.201s +1\&.904s └─systemd\-tmpfiles\-setup\-dev\&.service @7\&.306s +1\&.776s └─kmod\-static\-nodes\&.service @6\&.976s +177ms └─systemd\-journald\&.socket └─system\&.slice └─\-\&.slice .fi .if n \{\ .RE .\} .SS "systemd\-analyze dump" .PP Dieser Befehl gibt eine (normalerweise sehr lange) menschenlesbare Serialisierung des kompletten Serverzustandes aus\&. Sein Format unterliegt ohne Ankündigungen Änderungen und sollte nicht durch Anwendungen ausgewertet werden\&. .PP \fBBeispiel\ \&4.\ \&Den internen Zustand des Benutzerverwalters anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze \-\-user dump Timestamp userspace: Thu 2019\-03\-14 23:28:07 CET Timestamp finish: Thu 2019\-03\-14 23:28:07 CET Timestamp generators\-start: Thu 2019\-03\-14 23:28:07 CET Timestamp generators\-finish: Thu 2019\-03\-14 23:28:07 CET Timestamp units\-load\-start: Thu 2019\-03\-14 23:28:07 CET Timestamp units\-load\-finish: Thu 2019\-03\-14 23:28:07 CET \-> Unit proc\-timer_list\&.mount: Description: /proc/timer_list \&.\&.\&. \-> Unit default\&.target: Description: Main user target … .fi .if n \{\ .RE .\} .SS "systemd\-analyze plot" .PP Dieser Befehl gibt eine SVG\-Graphik aus, die detailliert, welche Systemdienste zu welcher Zeit gestartet wurden und hervorhebt, welche Zeit sie zur Initialisierung verbraucht haben\&. .PP \fBBeispiel\ \&5.\ \&Eine Systemstartübersicht darstellen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze plot >bootup\&.svg $ eog bootup\&.svg& .fi .if n \{\ .RE .\} .SS "systemd\-analyze dot [\fIMuster\fP\fR…]\fP" .PP Dieser Befehl erstellt eine textuelle Abhängigkeitsgraphbeschreibung im Dot\-Format zur weiteren Verarbeitung mit dem GraphViz\-Werkzeug \fBdot\fP(1)\&. Verwenden Sie eine Befehlszeile der Art \fBsystemd\-analyze dot | dot \-Tsvg >systemd\&.svg\fP, um einen graphischen Abhängigkeitsbaum zu erstellen\&. Falls weder \fB\-\-order\fP noch \fB\-\-require\fP angegeben sind, wird der erstellte Graph sowohl Ordnungs\- als auch Anforderungsabhängigkeiten darstellen\&. Optional können am Ende Muster\-Festlegungen im Glob\-Stil (z\&.B\&. *\&.target) angegeben werden\&. Eine Unit\-Abhängigkeit ist im Graph enthalten, falls eines dieser Muster entweder auf den Quell\- oder den Zielknoten passt\&. .PP \fBBeispiel\ \&6.\ \&Zeichnet alle Abhängigkeiten von jeder Unit, deren Name mit »avahi\-daemon« beginnt\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze dot \*(Aqavahi\-daemon\&.*\*(Aq | dot \-Tsvg >avahi\&.svg $ eog avahi\&.svg .fi .if n \{\ .RE .\} .PP \fBBeispiel\ \&7.\ \&Zeichnet alle Abhängigkeiten zwischen allen bekannten Ziel\-Units\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze dot \-\-to\-pattern=\*(Aq*\&.target\*(Aq \-\-from\-pattern=\*(Aq*\&.target\*(Aq \e | dot \-Tsvg >Ziele\&.svg $ eog Ziele\&.svg .fi .if n \{\ .RE .\} .SS "systemd\-analyze unit\-paths" .PP Dieser Befehl gibt eine Liste aller Verzeichnisse aus, aus denen Unit\-Dateien, \&.d overrides\- und \&.wants\-, \&.requires\-Symlinks geladen werden können\&. Kombinieren Sie dies mit \fB\-\-user\fP, um die Liste für die Benutzerverwalterinstanz abzufragen und \fB\-\-global\fP für die globale Konfiguration der Benutzerverwalterinstanzen\&. .PP \fBBeispiel\ \&8.\ \&Alle Pfade für erstellte Units anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze unit\-paths | grep \*(Aq^/run\*(Aq /run/systemd/system\&.control /run/systemd/transient /run/systemd/generator\&.early /run/systemd/system /run/systemd/system\&.attached /run/systemd/generator /run/systemd/generator\&.late .fi .if n \{\ .RE .\} .PP Beachten Sie, dass dieser Unterbefehl die Liste ausgibt, die in \fBsystemd\-analyze\fP selbst einkompiliert wurde und keine Kommunikation mit dem laufenden Verwalter stattfindet\&. Verwenden Sie .sp .if n \{\ .RS 4 .\} .nf systemctl [\-\-user] [\-\-global] show \-p Unit\-Pfad \-\-value .fi .if n \{\ .RE .\} .sp um die tatsächliche Liste, die der Verwalter benutzt, abzufragen, wobei alle leeren Verzeichnisse ausgelassen werden\&. .SS "systemd\-analyze exit\-status [\fISTATUS\fP\fR…]\fP" .PP Dieser Befehl gibt eine Liste von Exit\-Status zusammen mit ihrer »Klasse« aus, d\&.h\&. der Quelle der Definition (entweder »glibc«, »systemd«, »LSB« oder »BSD«), siehe den Abschnitt PROZESS\-EXIT\-CODES in \fBsystemd.exec\fP(5)\&. Falls keine zusätzlichen Argumente angegeben sind, werden alle bekannten Status angezeigt\&. Andernfalls werden nur die Definitionen für die angegebenen Codes angezeigt\&. .PP \fBBeispiel\ \&4.\ \&Ein paar Beispiel\-Exit\-Staus anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze exit\-status 0 1 {63\&.\&.65} NAME STATUS CLASS SUCCESS 0 glibc FAILURE 1 glibc \- 63 \- USAGE 64 BSD DATAERR 65 BSD .fi .if n \{\ .RE .\} .SS "systemd\-analyze capability [\fICAPABILITY\fP\fR…]\fP" .PP Dieser Befehl gibt eine Liste der Linux\-Capabilities zusammen mit ihren numerischen Kennungen aus\&. Siehe \fBcapabilities\fP(7) für Details\&. Falls kein Argument angegeben ist, wird die vollständige Liste der dem Diensteverwalter und dem Kernel bekannten Capabilities ausgegeben\&. Capabilities, die vom Kernel definiert werden aber dem Diensteverwalter nicht bekannt sind, werden als »cap_???« angezeigt\&. Falls Argumente angegeben sind, können sich diese optional auch auf bestimmte Capabilities über ihren Namen oder ihre numerische Kennung beziehen, wodurch dann nur die bezeichneten Capabilities in der Tabelle angezeigt werden\&. .PP \fBBeispiel\ \&10.\ \&Ein paar Beispiel\-Capability\-Namen anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze capability 0 1 {30\&.\&.32} NAME NUMBER cap_chown 0 cap_dac_override 1 cap_audit_control 30 cap_setfcap 31 cap_mac_override 32 .fi .if n \{\ .RE .\} .SS "systemd\-analyze condition \fIBEDINGUNG\fP\fR…\fP" .PP Dieser Befehl wertet die Zuweisungen \fICondition*=…\fP und \fIAssert*=…\fP aus und gibt ihre Werte und den daraus ergebenen Wert des kombinierten Bedingungssatzes aus\&. Siehe \fBsystemd.unit\fP(5) für eine Liste der verfügbaren Bedingungen und Zusicherungen\&. .PP \fBBeispiel\ \&11.\ \&Bedingungen auswerten, die Kernelversionen prüfen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze condition \*(AqConditionKernelVersion = ! <4\&.0\*(Aq \e \*(AqConditionKernelVersion = >=5\&.1\*(Aq \e \*(AqConditionACPower=|false\*(Aq \e \*(AqConditionArchitecture=|!arm\*(Aq \e \*(AqAssertPathExists=/etc/os\-release\*(Aq test\&.service: AssertPathExists=/etc/os\-release succeeded\&. Asserts succeeded\&. test\&.service: ConditionArchitecture=|!arm succeeded\&. test\&.service: ConditionACPower=|false failed\&. test\&.service: ConditionKernelVersion=>=5\&.1 succeeded\&. test\&.service: ConditionKernelVersion=!<4\&.0 succeeded\&. Conditions succeeded\&. .fi .if n \{\ .RE .\} .SS "systemd\-analyze syscall\-filter [\fIGRUPPE\fP\fR…]\fP" .PP Dieser Befehl führt die in der angegebenen \fIGRUPPE\fP enthaltenen Systemaufrufe auf oder alle bekannten Gruppen, falls keine Gruppen angegeben sind\&. Das Argument \fIGRUPPE\fP muss das Präfix »@« enthalten\&. .SS "systemd\-analyze calendar \fIAUSDRUCK\fP\fR…\fP" .PP Dieser Befehl wertet wiederholende Kalenderzeitereignisse aus und normiert und berechnet, wann sie das nächste Mal ablaufen\&. Dies akzeptiert die gleiche Eingabe wie die Einstellung \fIOnCalendar=\fP in \fBsystemd.timer\fP(5) und folgt der in \fBsystemd.time\fP(7) beschriebenen Syntax\&. Standardmäßig wird nur der nächste Zeitpunkt angezeigt, zu dem der Kalenderausdruck abläuft; verwenden Sie \fB\-\-iterations=\fP, um die angegebene Anzahl der nächsten Male anzuzeigen, zu denen der Ausdruck abläuft\&. Jedes Mal, wenn der Ausdruck abläuft, wird ein Zeitstempel gebildet, siehe den Unterbefehl \fBtimestamp\fP weiter unten\&. .PP \fBBeispiel\ \&12.\ \&Schalttage in der näheren Zukunft anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze calendar \-\-iterations=5 \*(Aq*\-2\-29 0:0:0\*(Aq Original form: *\-2\-29 0:0:0 Normalized form: *\-02\-29 00:00:00 Next elapse: Sat 2020\-02\-29 00:00:00 UTC From now: 11 months 15 days left Iter\&. #2: Thu 2024\-02\-29 00:00:00 UTC From now: 4 years 11 months left Iter\&. #3: Tue 2028\-02\-29 00:00:00 UTC From now: 8 years 11 months left Iter\&. #4: Sun 2032\-02\-29 00:00:00 UTC From now: 12 years 11 months left Iter\&. #5: Fri 2036\-02\-29 00:00:00 UTC From now: 16 years 11 months left .fi .if n \{\ .RE .\} .SS "systemd\-analyze timestamp \fIZEITSTEMPEL\fP\fR…\fP" .PP Dieser Befehl wertet den Zeitstempel (d\&.h\&. einen einzelnen Zeitpunkt) aus und gibt die normalisierte Form und den Unterschied zwischen diesem Zeitstempel und jetzt aus\&. Der Zeitstempel sollte daher der Syntax wie in \fBsystemd.time\fP(7), Abschnitt »ZEITSTEMPEL AUSWERTEN« dokumentiert folgen\&. .PP \fBBeispiel\ \&13.\ \&Die Auswertung von Zeitstempeln anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze timestamp yesterday now tomorrow Original form: yesterday Normalized form: Mon 2019\-05\-20 00:00:00 CEST (in UTC): Sun 2019\-05\-19 22:00:00 UTC UNIX seconds: @15583032000 From now: 1 day 9h ago Original form: now Normalized form: Tue 2019\-05\-21 09:48:39 CEST (in UTC): Tue 2019\-05\-21 07:48:39 UTC UNIX seconds: @1558424919\&.659757 From now: 43us ago Original form: tomorrow Normalized form: Wed 2019\-05\-22 00:00:00 CEST (in UTC): Tue 2019\-05\-21 22:00:00 UTC UNIX seconds: @15584760000 From now: 14h left .fi .if n \{\ .RE .\} .SS "systemd\-analyze timespan \fIAUSDRUCK\fP\fR…\fP" .PP Dieser Befehl wertet die Zeitspanne (d\&.h\&. die Differenz zwischen zwei Zeitstempeln) aus und gibt die normalisierte Form und das Äquivalent in Mikrosekunden aus\&. Die Zeitspanne sollte daher der Syntax wie in \fBsystemd.time\fP(7), Abschnitt »ZEITSPANNEN AUSWERTEN« dokumentiert folgen\&. Werte ohne Einheit werden als Sekunden ausgewertet\&. .PP \fBBeispiel\ \&14.\ \&Die Auswertung von Zeitspannen anzeigen\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze timespan 1s 300s \*(Aq1year 0\&.000001s\*(Aq Original: 1s μs: 1000000 Human: 1s Original: 300s μs: 300000000 Human: 5min Original: 1year 0\&.000001s μs: 31557600000001 Human: 1y 1us .fi .if n \{\ .RE .\} .SS "systemd\-analyze cat\-config \fINAME\fP\fR|\fP\fIPFAD\fP\fR…\fP" .PP Dieser Befehl ist ähnlich zu \fBsystemctl cat\fP, agiert aber auf Konfigurationsdateien\&. Er kopiert den Inhalt einer Konfigurationsdatei und aller Ergänzungsdateien in die Standardausgabe; dabei berücksichtigt es die normale Gruppe an Systemd\-Verzeichnissen und Regeln bezüglich des Vorrangs\&. Jedes Argument muss entweder ein absoluter Pfad einschließlich des Präfixes (wie /etc/systemd/logind\&.conf oder /usr/lib/systemd/logind\&.conf) oder ein Name relativ zu dem Präfix (wie systemd/logind\&.conf) sein\&. .PP \fBBeispiel\ \&15.\ \&Anzeige der Logind\-Konfiguration\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze cat\-config systemd/logind\&.conf # /etc/systemd/logind\&.conf \&.\&.\&. [Login] NAutoVTs=8 \&.\&.\&. # /usr/lib/systemd/logind\&.conf\&.d/20\-test\&.conf … und einiges aus einem anderen Paket, das außer Kraft setzt # /etc/systemd/logind\&.conf\&.d/50\-override\&.conf … und was vom Administrator, das außer Kraft setzt .fi .if n \{\ .RE .\} .SS "systemd\-analyze verify \fIDATEI\fP\fR…\fP" .PP Dieser Befehl lädt Unit\-Dateien und gibt Warnungen aus, falls irgendwelche Fehler erkannt werden\&. Auf der Befehlszeile angegebene Dateien werden geladen, aber auch alle von diesen referenzierte Dateien\&. Der komplette Unit\-Suchpfad wird durch Kombination der Verzeichnisse für alle Befehlzeilenargumente und dem normalen Unit\-Ladepfad zusammengestellt\&. Die Variable \fI$SYSTEMD_UNIT_PATH\fP wird unterstützt und kann zum Ersetzen oder Erweitern der einkompilierten Gruppe von Unit\-Ladepfaden verwandt werden; siehe \fBsystemd.unit\fP(5))\&. Alle Unit\-Dateien, die in den in der Befehlszeile enthaltenen Verzeichnissen vorhanden sind, werden gegenüber den in anderen Pfaden vorgezogen\&. .PP Derzeit werden die folgenden Fehler erkannt: .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} unbekannte Abschnitte und Anweisungen, .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} fehlende Abhängigkeiten, die zum Starten der übergegebenen Unit notwendig sind, .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} in \fIDocumentation=\fP aufgeführte Handbuchseiten, die im System nicht gefunden werden, .RE .sp .RS 4 .ie n \{\ \h'-04'\(bu\h'+03'\c .\} .el \{\ .sp -1 .IP \(bu 2.3 .\} in \fIExecStart=\fP und ähnlichen aufgeführte Befehle, die nicht im System gefunden wurden oder nicht ausführbar sind\&. .RE .PP \fBBeispiel\ \&16.\ \&Falschgeschriebene Anweisung\fP .sp .if n \{\ .RS 4 .\} .nf $ cat \&./user\&.slice [Unit] WhatIsThis=11 Documentation=man:nosuchfile(1) Requires=different\&.service [Service] Description=x $ systemd\-analyze verify \&./user\&.slice [\&./user\&.slice:9] Unknown lvalue \*(AqWhatIsThis\*(Aq in section \*(AqUnit\*(Aq [\&./user\&.slice:13] Unknown section \*(AqService\*(Aq\&. Ignoring\&. Error: org\&.freedesktop\&.systemd1\&.LoadFailed: Unit different\&.service failed to load: No such file or directory\&. Failed to create user\&.slice/start: Invalid argument user\&.slice: man nosuchfile(1) command failed with code 16 .fi .if n \{\ .RE .\} .PP \fBBeispiel\ \&17.\ \&Fehlende Dienste\-Units\fP .sp .if n \{\ .RS 4 .\} .nf $ tail \&./a\&.socket \&./b\&.socket ==> \&./a\&.socket <== [Socket] ListenStream=100 ==> \&./b\&.socket <== [Socket] ListenStream=100 Accept=yes $ systemd\-analyze verify \&./a\&.socket \&./b\&.socket Service a\&.service not loaded, a\&.socket cannot be started\&. Service b@0\&.service not loaded, b\&.socket cannot be started\&. .fi .if n \{\ .RE .\} .SS "systemd\-analyze security [\fIUNIT\fP\fR…]\fP" .PP Dieser Befehl analysiert die Sicherheits\- und Sandbox\-Einstellungen einer oder mehrerer angegebener Units\&. Falls mindestens ein Unit\-Name angegeben ist, werden die Sicherheitseinstellungen der angegebenen Dienste\-Units untersucht und eine detaillierte Analyse angezeigt\&. Falls kein Unit\-Name angegeben ist, werden alle derzeit geladenen, langlaufenden Dienste\-Units untersucht und eine knappe Tabelle mit den Ergebnissen angezeigt\&. Der Befehl prüft auf verschiedene sicherheitsbezogene Diensteeinstellungen, weist jeder einen »Gefährdungsstufen«\-Wert zu, abhängig davon, wie wichtig die Einstellung ist\&. Dann berechnet es eine Gesamtgefährdungsstufe für die gesamte Unit, die eine Abschätzung im Bereich 0\&.0…10\&.0 ist und anzeigt, wie aus Sicherheitssicht ein Dienst gefährdet ist\&. Hohe Gefährdungsstufen deuten an, dass Sandboxing nur im geringen Umfang verwandt wird\&. Geringe Gefährdungsstufen deuten an, dass enges Sandboxing und stärkste Sicherheitsbeschränkungen angewandt werden\&. Beachten Sie, dass dies nur die Sicherheitsfunktionalitäten pro Dienst analysiert, die Systemd selbst implementiert\&. Das bedeutet, dass sämtliche zusätzlichen Sicherheitsmechanismen, die vom Dienste\-Code selbst erbracht werden, nicht berücksichtigt werden\&. Die auf diese Art bestimmte Gefährdungsstufe sollte nicht missverstanden werden: eine hohe Gefährdungsstufe bedeutet weder, dass vom Dienste\-Code selbst kein wirksames Sandboxing angewandt wird, noch dass der Dienst tatsächlich für lokale Angriffe oder solche aus der Ferne verwundbar ist\&. Hohe Gefährdungsstufen deuten allerdings an, dass der Dienst am wahrscheinlichsten von zusätzlichen Einstellungen für sie Nutzen ziehen würde\&. .PP Bitte beachten Sie, dass viele der Sicherheits\- und Sandboxing\-Einstellungen jeweils einzeln umgangen werden können \(em außer sie werden mit anderen kombiniert\&. Falls ein Dienst beispielsweise das Privileg behält, Einhängepunkte zu etablieren oder rückgängig zu machen, können viele der Sandboxing\-Optionen durch den System\-Code selbst rückgängig gemacht werden\&. Daher ist es wesentlich, dass jeder Dienst die umfassendsten und strengsten Sicherheits\- und Sandboxing\-Einstellungen, die möglich sind, verwendet\&. Das Werkzeug wird einige dieser Kombinationen und Beziehungen zwischen den Einstellungen berücksichtigen, aber nicht alle\&. Beachten Sie auch, dass die Sicherheits\- und Sandboxing\-Einstellungen, die hier analysiert werden, nur für vom Dienste\-Code selbst ausgeführte Aktionen greifen\&. Falls ein Dienst Zugriff auf ein IPC\-System (wie D\-Bus) hat, könnte er Aktionen von anderen Diensten erbitten, die nicht den gleichen Beschränkungen unterliegen\&. Daher ist jede umfassende Sicherheits\- und Sandboxing\-Analyse unvollständig, falls die IPC\-Zugriffsregeln nicht auch gegengeprüft werden\&. .PP \fBBeispiel\ \&18.\ \&systemd\-logind\&.service analysieren\fP .sp .if n \{\ .RS 4 .\} .nf $ systemd\-analyze security \-\-no\-pager systemd\-logind\&.service NAME DESCRIPTION EXPOSURE ✗ PrivateNetwork= Service has access to the host\*(Aqs network 0\&.5 ✗ User=/DynamicUser= Service runs as root user 0\&.4 ✗ DeviceAllow= Service has no device ACL 0\&.2 ✓ IPAddressDeny= Service blocks all IP address ranges … → Overall exposure level for systemd\-logind\&.service: 4\&.1 OK 🙂 .fi .if n \{\ .RE .\} .SH OPTIONEN .PP Die folgenden Optionen werden verstanden: .PP \fB\-\-system\fP .RS 4 Agiert auf der System\-Systemd\-Instanz\&. Dies ist die implizierte Vorgabe\&. .RE .PP \fB\-\-user\fP .RS 4 Agiert auf der Benutzer\-Systemd\-Instanz\&. .RE .PP \fB\-\-global\fP .RS 4 Agiert auf der systemweiten Konfiguration für Benutzer\-Systemd\-Instanzen\&. .RE .PP \fB\-\-order\fP, \fB\-\-require\fP .RS 4 Wählt bei der Verwendung mit dem Befehl \fBdot\fP (siehe oben) die im Abhängigkeitsgraph zu zeigenden Abhängigkeiten aus\&. Falls \fB\-\-order\fP übergeben wird, werden nur Abhängigkeiten vom Typ \fIAfter=\fP oder \fIBefore=\fP gezeigt\&. Falls \fB\-\-require\fP übergeben wird, werden nur Abhängigkeiten vom Typ \fIRequires=\fP, \fIRequisite=\fP, \fIWants=\fP und \fIConflicts=\fP gezeigt\&. Falls keines davon übergeben wird, werden die Abhängigkeiten aller dieser Typen gezeigt\&. .RE .PP \fB\-\-from\-pattern=\fP, \fB\-\-to\-pattern=\fP .RS 4 Wählt bei der Verwendung mit dem Befehl \fBdot\fP (siehe oben) aus, welche Beziehungen im Abhängigkeitsgraph gezeigt werden\&. Beide Optionen benötigen ein \fBglob\fP(7)\-Muster als Argument, das mit den Knoten auf der rechten bzw\&. linken Seite einer Beziehung übereinstimmen muss\&. .sp Jeder davon kann mehr als einmal verwandt werden, dann müssen die Unit\-Namen auf jeden der Werte passen\&. Falls Tests für beide Seiten der Relation vorhanden sind, muss eine Relation beide Tests bestehen, um angezeigt zu werden\&. Wenn Muster zudem als positionsabhängige Argumente angegeben werden, müssen sie auf mindestens einer Seite der Relation passen\&. Mit anderen Worten, Muster, die mit diesen zwei Optionen angegeben werden, verkürzen die Liste der Kanten, auf die die positionsabhängigen Argumente passen, falls welche angegeben werden, und zeigen die komplette Liste der Kanten andernfalls\&. .RE .PP \fB\-\-fuzz=\fP\fIZeitspanne\fP .RS 4 Zeigt bei der Verwendung mit dem Befehl \fBcritical\-chain\fP (siehe oben) auch Units, die sich eine \fIZeitspanne\fP früher beendeten, als die letzte Unit auf der gleichen Stufe\&. Die Einheit von \fIZeitspanne\fP ist Sekunden, außer es wird eine andere Einheit angegeben, z\&.B\&. »50ms«\&. .RE .PP \fB\-\-man=no\fP .RS 4 Ruft \fBman\fP(1) nicht auf, um die Existenz von in \fIDocumentation=\fP aufgeführten Handbuchseiten zu überprüfen\&. .RE .PP \fB\-\-generators\fP .RS 4 Ruft Unit\-Generatoren auf, siehe \fBsystemd.generator\fP(7)\&. Einige Generatoren benötigen Root\-Rechte\&. Beim Betrieb mit aktivierten Generatoren kommt es als normaler Benutzer im Allgemeinen zu einigen Warnmeldungen\&. .RE .PP \fB\-\-root=\fP\fIPFAD\fP .RS 4 Zeigt mit \fBcat\-files\fP Konfigurationsdateien unterhalb des angegebenen Wurzelpfades \fIPFAD\fP an\&. .RE .PP \fB\-\-iterations=\fP\fIANZAHL\fP .RS 4 Zeigt bei der Verwendung zusammen mit dem Befehl \fBcalendar\fP die angegebene Anzahl an Iterationen, zu denen die angegebenen Kalenderausdrücke das nächste Mal ablaufen\&. Standardmäßig 1\&. .RE .PP \fB\-\-base\-time=\fP\fIZEITSTEMPEL\fP .RS 4 Zeigt bei der Verwendung zusammen mit dem Befehl \fBcalendar\fP die nächste Iteration relativ zum angegebenen Zeitpunkt an\&. Falls nicht angegeben, ist die Vorgabe die aktuelle Zeit\&. .RE .PP \fB\-H\fP, \fB\-\-host=\fP .RS 4 Führt die Aktion aus der Ferne aus\&. Geben Sie den Rechnernamen oder einen Benutzernamen und Rechnernamen (getrennt durch »@«) an, zu dem verbunden werden soll\&. Dem Rechnernamen darf optional ein Port, auf dem SSH auf Anfragen wartet, getrennt durch »:« und dann ein Container auf dem angegebenen Host angehängt werden, womit direkt zu einem bestimmten Container auf dem angegebenen Rechner verbunden wird\&. Dies verwendet SSH, um mit der Maschinen\-Verwalterinstanz auf dem Rechner in der Ferne zu kommunizieren\&. Container\-Namen dürfen mit \fBmachinectl \-H \fP\fIRECHNER\fP aufgezählt werden\&. Stellen Sie IPv6\-Adressen in Klammern\&. .RE .PP \fB\-M\fP, \fB\-\-machine=\fP .RS 4 Führt die Aktion in einem lokalen Container aus\&. Geben Sie den Namen des Containers an, zu dem verbunden werden soll\&. .RE .PP \fB\-h\fP, \fB\-\-help\fP .RS 4 Zeigt einen kurzen Hilfetext an und beendet das Programm\&. .RE .PP \fB\-\-version\fP .RS 4 Zeigt eine kurze Versionszeichenkette an und beendet das Programm\&. .RE .PP \fB\-\-no\-pager\fP .RS 4 Leitet die Ausgabe nicht an ein Textanzeigeprogramm weiter\&. .RE .SH EXIT\-STATUS .PP Bei Erfolg wird 0 zurückgegeben, anderenfalls ein Fehlercode ungleich Null\&. .SH UMGEBUNGSVARIABLEN .PP \fI$SYSTEMD_PAGER\fP .RS 4 Zu verwendendes Textanzeigeprogramm, wenn \fB\-\-no\-pager\fP nicht angegeben ist; setzt \fI$PAGER\fP außer Kraft\&. Falls weder \fI$SYSTEMD_PAGER\fP noch \fI$PAGER\fP gesetzt sind, wird eine Reihe wohlbekannter Textanzeigeprogrammimplementierungen der Reihe nach ausprobiert, einschließlich \fBless\fP(1) und \fBmore\fP(1), bis eines gefunden wird\&. Falls keine Textanzeigeprogrammimplementierung gefunden wird, wird keines aufgerufen\&. Setzen der Umgebungsvariablen auf die leere Zeichenkette oder den Wert »cat« ist äquivalent zur Übergabe von \fB\-\-no\-pager\fP\&. .RE .PP \fI$SYSTEMD_LESS\fP .RS 4 Setzt die an \fBless\fP übergebenen Optionen (standardmäßig »FRSXMK«) außer Kraft\&. .sp Benutzer könnten insbesondere zwei Optionen ändern wollen: .PP \fBK\fP .RS 4 Diese Option weist das Textanzeigeprogramm an, sich sofort beim Druck von Strg\-C zu beenden\&. Um \fBless\fP die Handhabung von Strg\-C selbst zum Umschalten auf die Eingabeaufforderung zu erlauben, setzen Sie diese Option zurück\&. .sp Falls der Wert von \fI$SYSTEMD_LESS\fP kein »K« enthält und \fBless\fP das aufgerufene Textanzeigeprogramm ist, wird Strg+C durch das Programm ignoriert und muss durch das Textanzeigeprogramm selbst gehandhabt werden\&. .RE .PP \fBX\fP .RS 4 Diese Option weist das Textanzeigeprogramm an, keine Termcap\-Initialisierungs\- und \-Deinitalisierungszeichenketten an das Terminal zu senden\&. Dies ist standardmäßig gesetzt, damit die Darstellung von Befehlen selbst nach dem Beenden des Textanzeigeprogramms sichtbar bleibt\&. Allerdings stehen dadurch einige Funktionen des Textanzeigeprogramms nicht zur Verfügung; insbesondere ist das Scrollen in der Ausgabe mit der Maus nicht möglich\&. .RE .sp Siehe \fBless\fP(1) für weitere Ausführungen\&. .RE .PP \fI$SYSTEMD_LESSCHARSET\fP .RS 4 Setzt den an \fBless\fP zu übergebenden Zeichensatz (standardmäßig »utf\-8«, falls das aufrufende Terminal als UTF\-8\-kompatibel erkannt wurde) außer Kraft\&. .RE .PP \fI$SYSTEMD_PAGERSECURE\fP .RS 4 Akzeptiert einen logischen Wert\&. Wenn wahr, wird der »sichere« Modus des Seitenanzeigeprogramms verwandt, falls falsch, wird dieser deaktiviert\&. Falls \fI$SYSTEMD_PAGERSECURE\fP überhaupt nicht gesetzt ist, dann wird der sichere Modus aktiviert, falls die effektive Kennung nicht identisch zu dem Eigentümer der Anmeldesitzung ist, siehe \fBgeteuid\fP(2) und \fBsd_pid_get_owner_uid\fP(3)\&. Im sicheren Modus wird \fBLESSSECURE=1\fP beim Aufruf des Seitenanzeigeprogramms gesetzt und das Seitenanzeigeprogramm muss Befehle deaktivieren, die neue Dateien öffnen oder erstellen oder die einen neuen Unterprozess starten\&. Falls \fI$SYSTEMD_PAGERSECURE\fP überhaupt nicht gesetzt ist, werden Seitenanzeigeprogramme, bei denen unbekannt ist, ob sie einen sicheren Modus implementieren, nicht verwandt\&. (Derzeit implementiert nur \fBless\fP(1) einen sicheren Modus\&.) .sp Hinweis: Wenn Befehle mit erhöhten Rechten ausgeführt werden, beispielsweise mittels \fBsudo\fP(8) oder \fBpkexec\fP(1), muss Vorsicht walten gelassen werden, um sicherzustellen, dass keine ungeplanten interaktiven Funktionalitäten aktiviert werden\&. Der »sichere« Modus für das Seitenanzeigeprogramm kann wie oben beschrieben automatisch aktiviert werden\&. Durch Setzen von \fISYSTEMD_PAGERSECURE=0\fP oder durch Nichtenfernen dieser Einstellung aus der ererbten Umgebung wird es dem Benutzer ermöglicht, beliebige Befehle auszuführen\&. Beachten Sie, dass auch \fI$SYSTEMD_PAGERSECURE\fP gesetzt werden muss, falls die Variablen \fI$SYSTEMD_PAGER\fP oder \fI$PAGER\fP berücksichtigt werden sollen\&. Es kann sinnvoll sein, stattdessen den Seitenanzeiger komplett mit \fB\-\-no\-pager\fP zu deaktivieren\&. .RE .PP \fI$SYSTEMD_COLORS\fP .RS 4 Dies muss ein logischer Wert sein\&. Er steuert, ob farbige Ausgabe erstellt werden soll\&. Dies kann angegeben werden, um die Entscheidung, die \fBsystemd\fP basierend auf \fI$TERM\fP und der Art der angebundenen Konsole trifft, außer Kraft zu setzen\&. .RE .PP \fI$SYSTEMD_URLIFY\fP .RS 4 Dies muss ein logischer Wert sein\&. Er steuert, ob anklickbare Links für Terminal\-Emulatoren, die dies unterstützen, erstellt werden sollen\&. Dies kann angegeben werden, um die Entscheidung, die \fBsystemd\fP basierend auf \fI$TERM\fP und anderen Bedingungen trifft, außer Kraft zu setzen\&. .RE .SH "SIEHE AUCH" .PP \fBsystemd\fP(1), \fBsystemctl\fP(1) .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Helge Kreutzmann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die .UR https://www.gnu.org/licenses/gpl-3.0.html GNU General Public License Version 3 .UE oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an die .MT debian-l10n-german@\:lists.\:debian.\:org Mailingliste der Übersetzer .ME .