Linux-Prozesse, Pakete und Dienste

Lerne, die Software auf einem Linux-System über die Befehlszeile zu betreuen. Überwache Prozesse mit ps, top und free, stoppe sie mit Signalen oder ändere ihre Priorität mit nice und untersuche die Hardware mit Werkzeugen wie lscpu, lsblk und lspci. Installiere, aktualisiere und entferne Software mit apt und dnf, verwalte Dienste mit systemctl, lies Protokolle mit journalctl, /var/log und dmesg, um Fehler bei einem Dienst zu diagnostizieren, und sichere Dateien mit tar, gzip, xz und zip.

AnfängerEinheit 6 von 7 in Kurs: Linux – Befehlszeile, Shellskripte und Systemverwaltung

Was du lernst

  1. Finde die Programme, die auf einem Linux-System laufen, beobachte ihren CPU- und Arbeitsspeicherverbrauch und stoppe oder pausiere sie sicher oder ändere ihre Priorität.
    • Prozesse auflisten und die Ausgabe von ps lesen
      Erkläre, was ein Prozess ist, identifiziere ihn anhand seiner Prozess-ID und nutze ps, pgrep und /proc, um Prozesse zu finden und ihren Zustand abzulesen.
    • CPU-Auslastung, Arbeitsspeicher und Systemlast mit top, free und uptime überwachen
      Lies die laufend aktualisierte Prozessansicht in top, beurteile den Arbeitsspeicher mit free und entscheide anhand der mittleren Systemlast, ob ein System überlastet ist.
    • Prozesse mit Signalen stoppen
      Sende Signale mit kill, pkill und killall, wähle zwischen einer höflichen Aufforderung zum Beenden und einem erzwungenen Abbruch und prüfe das Ergebnis.
    • Jobs im Hintergrund ausführen und Prioritäten festlegen
      Verschiebe Befehle zwischen Vorder- und Hintergrund, lasse sie nach der Abmeldung weiterlaufen und ändere ihre CPU-Priorität mit nice und renice.
  2. Finde heraus, welche Prozessoren, welchen Arbeitsspeicher, welche Datenträger und Geräte ein Linux-Rechner hat und welchen Kernel und welche Treiber er verwendet, ohne das Gehäuse zu öffnen.
    • Prozessor, Arbeitsspeicher und System identifizieren
      Nutze uname, lscpu, nproc, /proc und dmidecode, um Architektur, CPUs, Arbeitsspeicher und Kernel eines Rechners zu ermitteln.
    • Datenträger, PCI- und USB-Geräte sowie ihre Treiber auflisten
      Benenne Speichergeräte richtig, liste die an einen Rechner angeschlossenen Geräte mit lsblk, lspci und lsusb auf und finde die zugehörigen Treiber und Kernelmeldungen.
  3. Nutze die Paketmanager der Debian- und Red-Hat-Familie, um Software aus vertrauenswürdigen Paketquellen sicher zu installieren, zu aktualisieren, zu entfernen und zu untersuchen.
    • Softwarepakete, Paketquellen und Abhängigkeiten verstehen
      Erkläre, was ein Paket, eine Paketquelle und eine Abhängigkeit sind, wie übergeordnete und grundlegende Paketwerkzeuge die Arbeit aufteilen und welche Werkzeuge die einzelnen Distributionsfamilien verwenden.
    • Software mit apt und dnf installieren, aktualisieren und entfernen
      Aktualisiere Paketinformationen, installiere und aktualisiere Software und entferne sie sauber mit apt auf Systemen der Debian-Familie und dnf auf Systemen der Red-Hat-Familie.
    • Nach Paketen suchen und installierte Software untersuchen
      Finde das benötigte Paket, prüfe, was in welcher Version installiert ist, sieh nach, welche Dateien ein Paket installiert hat und zu welchem Paket eine Datei gehört, und überprüfe den Paketverlauf.
  4. Prüfe, starte, stoppe, aktiviere und passe Hintergrunddienste mit systemctl an und verstehe, wie systemd entscheidet, was beim Systemstart läuft.
    • systemd, Units und den Dienststatus verstehen
      Erkläre, was ein Dienst und eine systemd-Unit sind, lies die Ausgabe von systemctl status und unterscheide zwischen einem laufenden und einem aktivierten Dienst.
    • Dienste starten, stoppen, aktivieren und deaktivieren
      Steuere Dienste mit systemctl sofort und beim Systemstart, wende Konfigurationsänderungen sicher an und wähle das Standard-Target für den Systemstart.
    • Unit-Dateien lesen und anpassen
      Finde und lies die Unit-Datei eines Dienstes, ändere seine Einstellungen sicher mit Drop-ins und schreibe einen einfachen eigenen Dienst.
  5. Finde mithilfe des systemd-Journals, der Protokolldateien in /var/log und der Kernelmeldungen heraus, was ein System und seine Dienste getan haben, und nutze die Meldungen, um Fehler bei einem Dienst zu beheben.
    • Das systemd-Journal mit journalctl abfragen
      Lies das systemd-Journal mit journalctl, filtere nach Dienst, Systemstart, Priorität und Zeit und erfahre, wo das Journal gespeichert wird.
    • Protokolldateien in /var/log und Kernelmeldungen lesen
      Finde und lies Textprotokolldateien in /var/log, einschließlich älterer rotierter Dateien, und lies mit dmesg die Kernelmeldungen über Hardware und Treiber.
    • Fehler bei einem Dienst Schritt für Schritt diagnostizieren
      Kombiniere systemctl, journalctl und die programmeigenen Prüfungen zu einem wiederholbaren Ablauf, der die Ursache eines Dienstfehlers findet und die Behebung bestätigt.
  6. Fasse Dateien und Verzeichnisse mit tar und zip zu Archiven zusammen, komprimiere und dekomprimiere sie mit gzip, bzip2 und xz und wähle das passende Format für Sicherungen und die Weitergabe.
    • tar-Archive erstellen, ihren Inhalt auflisten und sie entpacken
      Erstelle mit tar komprimierte Archive, prüfe ihren Inhalt und entpacke sie am richtigen Ort, ohne versehentlich Dateien zu überschreiben.
    • Dateien mit gzip, bzip2, xz und zip komprimieren
      Komprimiere und dekomprimiere einzelne Dateien, lies komprimierte Protokolle ohne sie zu entpacken, nutze zip für die Weitergabe und wähle ein Format nach Geschwindigkeit, Größe und Zweck.

Linux-Prozesse, Pakete und Dienste einfach erklärt

6 Kapitel

1

Laufende Prozesse überwachen und steuern

Ein langsamer Befehl, ein stark ausgelasteter Server und ein Programm, das sich nicht schließen lässt, führen alle zur selben Frage: Was läuft? Mit Prozesswerkzeugen kannst du einen Programmnamen mit seinem Eigentümer, seiner Prozess-ID und seinem Ressourcenverbrauch in Verbindung bringen. Du liest eine Momentaufnahme, beobachtest Veränderungen über die Zeit und entscheidest dann, wie du die Arbeit stoppst oder pausierst. Die Jobsteuerung der Shell und CPU-Prioritäten geben dir mehr Kontrolle über lange Aufgaben, ohne dass du die Eingabeaufforderung des Terminals verlierst.

1.1 Prozesse auflisten und die Ausgabe von ps lesen

Ein Programm wie /usr/bin/sleep ist eine Datei auf einem Datenträger. Ein Prozess ist eine laufende Instanz dieses Programms mit eigenem Arbeitsspeicher und eigenen Ressourcen. Drei Befehle, die dasselbe Programm ausführen, erzeugen drei Prozesse. Jeder laufende Prozess hat eine PID, eine Prozess-ID; Linux kann diese Nummer nach seinem Ende erneut vergeben.

Den Prozess und seinen Elternprozess finden

Ein Prozess wird normalerweise von einem anderen Prozess gestartet, seinem Elternprozess. Die Spalte PPID gibt die PID dieses Elternprozesses an. Befehle, die du in einer Shell startest, sind deren Kindprozesse. PID 1 ist der erste vom Kernel gestartete Prozess; auf einem systemd-System ist das systemd. pstree -p zeichnet diese Verwandtschaftsbeziehungen, sofern es installiert ist.

ps erstellt eine Momentaufnahme. Standardmäßig wählt es Prozesse mit deiner effektiven Benutzer-ID auf deinem aktuellen Terminal aus. Für eine systemweite Ansicht wähle die benötigten Spalten:

BefehlNützliche Spalten
ps -efUID, PID, PPID, STIME, TIME, CMD
ps auxUSER, PID, %CPU, %MEM, VSZ, RSS, TTY, STAT, START, TIME, COMMAND

Die BSD-Form ps aux hat keinen Bindestrich. Das Feld USER nennt das Konto, dessen Rechte der Prozess nutzt. Ein root-Prozess kann auf Ressourcen zugreifen, auf die der Prozess eines regulären Benutzers nicht zugreifen kann.

Eine Zeile lesen

Betrachte dieses Beispiel aus ps aux:

www-data 2417 0.3 1.2 214560 48212 ? S 09:14 0:02 nginx: worker process

Der Eigentümer ist www-data, die PID ist 2417 und der CPU-Verbrauch lag seit dem Start durchschnittlich bei 0,3 %. Der Prozess belegt derzeit 1,2 % des Arbeitsspeichers. RSS ist der residente Speicher: 48.212 KiB, etwa 47,1 MiB. VSZ, 214.560 KiB, enthält auch virtuellen Adressraum, der nicht im Arbeitsspeicher liegt. Ein großer VSZ-Wert allein ist kein Beleg für Speichermangel.

Das ? bedeutet, dass es kein steuerndes Terminal gibt. Der Zustand S bedeutet wartend, meist auf Arbeit. START ist 09:14; TIME beträgt zwei Sekunden CPU-Arbeit. TIME ist nicht die verstrichene Zeit: Ein Server kann tagelang laufen und dabei sehr wenig CPU-Zeit verbrauchen.

Prozesszustände erkennen
ZustandBedeutung
RLaufend oder bereit für CPU-Zeit
SWartet auf ein Ereignis
DNicht unterbrechbar wartend, oft auf einen Speicherzugriff
TAngehalten oder pausiert
ZZombieprozess: beendet, wartet auf Abholung durch den Elternprozess
IInaktiver Kernel-Thread

STAT kann Kennzeichen ergänzen: + für eine Vordergrundgruppe eines Terminals, s für einen Sitzungsleiter, l für mehrere Threads, N für verringerte CPU-Priorität und < für erhöhte Priorität. Wartende Prozesse sind normal. Ein Zombieprozess ist bereits beendet und verbraucht keine CPU-Zeit; ein weiteres Beendigungssignal kann seinen Rückgabestatus nicht abholen. Eine wachsende Zahl von Zombieprozessen weist auf ein Elternprogramm hin, das Aufmerksamkeit benötigt.

Die Suche eingrenzen

pgrep -a nginx zeigt passende PIDs und Befehlszeilen. Muster können auf mehrere Namen passen: pgrep ssh kann sowohl sshd als auch ssh-agent finden. pgrep -u alice wählt nach Eigentümer aus; pidof nginx sucht nach einem Programmnamen. Eine ps-Pipeline durch grep kann auch den grep-Prozess selbst anzeigen.

Für die fünf größten Speicherverbraucher führe aus:

ps -eo pid,ppid,user,%mem,cmd --sort=-%mem | head -n 6

Es gibt sechs Zeilen, weil die erste eine Kopfzeile ist. ps -p 2417 prüft eine einzelne PID. /proc/2417/status stellt Name, Zustand, Elternprozess und Speicherdetails bereit. /proc ist eine vom Kernel bereitgestellte virtuelle Ansicht und keine Sammlung von Prozessberichten auf dem Datenträger; das PID-Verzeichnis verschwindet, wenn der Prozess endet.

Wichtige Erkenntnisse

  • Ein Prozess ist eine laufende Instanz; seine PID identifiziert ihn, solange er existiert.
  • ps -ef zeigt Elternprozesse; ps aux ergänzt Spalten für CPU und Arbeitsspeicher.
  • TIME misst die CPU-Arbeit, während START den Beginn des Prozesses angibt.
  • RSS misst residenten Arbeitsspeicher; VSZ enthält weiteren virtuellen Speicher.
  • Wartende Prozesse sind normal; Zombieprozesse sind bereits beendet.
  • pgrep grenzt eine Suche ein und /proc/PID/status stellt Kernelinformationen bereit.

1.2 CPU-Auslastung, Arbeitsspeicher und Systemlast mit top, free und uptime überwachen

Eine Momentaufnahme zeigt dir, was vorhanden ist; wiederholte Beobachtungen zeigen, was sich verändert. top kombiniert eine laufend aktualisierte Prozessliste mit Gesamtwerten für CPU-Aktivität, Systemlast, Arbeitsspeicher und Auslagerungsspeicher. Betrachte die Übersicht und die stark beschäftigten Prozesse zusammen, bevor du entscheidest, welche Ressource knapp wird.

Mit top arbeiten

Führe top aus. Drücke P, um nach CPU-Verbrauch zu sortieren, M für Speicherverbrauch, 1, um jede CPU anzuzeigen, h für Hilfe und q zum Beenden. Die Befehle k und r senden Signale und ändern Nice-Werte. htop bietet eine weitere interaktive Ansicht, muss aber möglicherweise installiert werden.

Zu den Prozessspalten gehören PID, USER, PR, NI, VIRT, RES, SHR, Zustand, %CPU, %MEM, TIME+ und COMMAND. RES ist der residente Arbeitsspeicher, wie RSS in ps; VIRT enthält reservierten Adressraum. Im Standardmodus von top, der sich auf eine CPU bezieht, kann ein Prozess mit mehreren Threads 400 % erreichen, indem er vier CPUs auslastet. Mit I stellst du die Anzeige so um, dass der Verbrauch durch die Anzahl der CPUs dividiert wird.

Die Art der CPU-Aktivität erkennen

Die CPU-Übersicht teilt die Zeit in Kategorien auf:

FeldWas es angibt
us, syArbeit von Benutzerprogrammen und Kernelarbeit
niBenutzerarbeit mit angepasster Nice-Priorität
idLeerlaufzeit
waLeerlaufzeit während ausstehender E/A-Vorgänge
hi, siVerarbeitung von Hardware- und Software-Interrupts
stZeit, die eine virtuelle Maschine an ihr Hostsystem verloren hat

Hoher CPU-Verbrauch durch Benutzerprogramme deutet auf Rechenarbeit hin. Ein hoher wa-Wert bei wenig Benutzerarbeit lenkt die Aufmerksamkeit auf Wartezeiten bei Speicherzugriffen. In einer virtuellen Maschine weist ein hoher st-Wert auf CPU-Zeit hin, die das Hostsystem vorenthält. Dies sind verschiedene Ursachen für langsame Reaktionen.

Systemlast mit CPU-Kapazität vergleichen

uptime und top zeigen die mittlere Systemlast für die letzten 1, 5 und 15 Minuten. Linux zählt laufbereite und nicht unterbrechbar wartende Prozesse, einschließlich derer, die auf Speicherzugriffe warten. Die Systemlast ist kein CPU-Prozentwert. nproc meldet die CPUs, die dem aktuellen Prozess zur Verfügung stehen. Das hilft bei der Beurteilung der Kapazität.

Angenommen, bei CPU-lastiger Arbeit mit wenigen Wartezeiten auf Speicherzugriffe meldet nproc 4 und die Systemlast beträgt 6.00, 5.20, 3.10. Die jüngste Last beträgt 1,5 Prozesse pro CPU, sodass Arbeit auf ihre Ausführung warten musste. Der Wert für den kürzeren Zeitraum liegt über dem für den längeren und zeigt damit einen jüngsten Anstieg. Auf 16 CPUs wäre eine Last von 6 wesentlich geringer. Eine hohe Systemlast bei untätigen CPUs kann dagegen von Prozessen im Zustand D stammen.

Arbeitsspeicher anhand von available beurteilen

Führe free -h aus. Die Zeile Mem enthält total, used, free, shared, buff/cache und available. Linux füllt freien Arbeitsspeicher mit nützlichen Datenträger-Caches und kann einen großen Teil davon zurückgewinnen. Free zählt vollständig ungenutzten Arbeitsspeicher; available schätzt, wie viel neue Arbeit nutzen kann, ohne auszulagern.

Ein Rechner meldet zum Beispiel total 7.6Gi, used 3.1Gi, free 0.4Gi, buff/cache 4.6Gi und available 4.5Gi. Der kleine Wert bei free bedeutet keinen Mangel: Etwa 59 % bleiben verfügbar. In aktuellen procps-Versionen ist used gleich total minus available; free, used und Cache sind keine einfache Aufteilung, die sich addieren lässt.

Die Endungen Ki, Mi und Gi stehen für binäre Einheiten. Ein GiB entspricht 1.073.741.824 Byte; ein GB entspricht 1.000.000.000 Byte. free -m verwendet MiB und free -g ganze GiB, wodurch kleine Mengen durch Rundung verborgen bleiben können.

Auslagerungsspeicher nimmt einen Teil des Speicherinhalts auf einem langsameren Datenträger auf. Achte darauf, ob wenig Arbeitsspeicher verfügbar ist und gleichzeitig die Nutzung des Auslagerungsspeichers wächst. Ist der Speicher erschöpft, kann der OOM-Killer des Kernels einen Prozess beenden. Suche mit sudo journalctl -k nach einer OOM-Meldung, bevor du annimmst, dass eine Anwendung von selbst abgestürzt ist.

Wichtige Erkenntnisse

  • Nutze in top sowohl die Systemübersicht als auch die Prozessliste.
  • Die Linux-Systemlast zählt laufbereite und nicht unterbrechbar wartende Prozesse; sie ist kein Prozentwert.
  • Beurteile die Systemlast im Verhältnis zu den verfügbaren CPUs und prüfe, ob Prozesse auf Speicherzugriffe warten.
  • Um den verfügbaren Spielraum im Arbeitsspeicher zu beurteilen, ist die Spalte available nützlicher als free.
  • Wenig verfügbarer Arbeitsspeicher und wachsende Nutzung des Auslagerungsspeichers weisen auf Speicherknappheit hin; OOM-Ereignisse erscheinen in Kernel-Protokollen.

1.3 Prozesse mit Signalen stoppen

Ein Signal ist eine kurze Benachrichtigung an einen Prozess. Es kann zum Beenden auffordern, Arbeit pausieren oder einem Dienst mitteilen, dass er Einstellungen neu einlesen soll. Der Befehl kill sendet Signale; sein Name bedeutet nicht, dass jedes Signal den Empfänger beendet.

Das Signal auswählen
SignalZweck
SIGTERMZu einem sauberen Ende auffordern; Standard für kill
SIGKILLBeendigung ohne Aufräumarbeiten der Anwendung erzwingen
SIGINTDas Vordergrundprogramm unterbrechen, meist mit Strg+C
SIGTSTPZum Pausieren auffordern, meist mit Strg+Z
SIGSTOPEine Pause erzwingen
SIGCONTEinen angehaltenen Prozess fortsetzen
SIGHUPDas Schließen des Terminals melden; manche Dienste nutzen es zum Neuladen
SIGQUITBeenden, gegebenenfalls mit Speicherabzug; Strg+\ sendet es

Die meisten Signale kann das Programm behandeln oder ignorieren. SIGKILL und SIGSTOP können nicht abgefangen, blockiert oder ignoriert werden. kill -l listet Namen und Nummern auf. Zu den gebräuchlichen Nummern auf x86 und ARM gehören TERM 15, KILL 9, INT 2, HUP 1, QUIT 3, CONT 18, STOP 19 und TSTP 20. Namen vermeiden architekturabhängige Nummerierungen.

Einen Prozess vorsichtig stoppen

Stelle zuerst fest, um welchen Prozess es sich handelt. Mit ps -p 5120 -o pid,user,stat,cmd kannst du PID, Eigentümer, Zustand und Befehl untersuchen. Fordere dann ein sauberes Ende an:

kill -TERM 5120

kill 5120, kill -15 5120 und kill -s TERM 5120 senden dieselbe Aufforderung. Ein sauberes Ende ermöglicht es der Anwendung, Arbeit zu speichern, Dateien zu schließen und Sperrdateien zu entfernen. Gib ihr Zeit zu reagieren und führe dann erneut ps -p 5120 aus. Erscheint nur die Kopfzeile, ist sie beendet.

Hängt derselbe laufende Prozess nach der Wartezeit noch immer, ist kill -KILL 5120 die erzwungene Ausweichlösung. Die Anwendung hat dann keine Gelegenheit aufzuräumen; ungesicherte Arbeit und zurückgelassene temporäre Dateien können bestehen bleiben. Prüfe die Identität erneut, bevor du diesen Schritt gehst: PIDs können nach dem Ende erneut vergeben werden.

Namen vor dem Handeln abgleichen

pkill wählt anhand eines Namensmusters aus; killall wählt einen Programmnamen aus. Beide senden normalerweise SIGTERM. Prüfe ein weit gefasstes Muster mit pgrep -a fire, bevor du pkill fire verwendest: Das Muster kann mehr Prozesse auswählen als den beabsichtigten. pkill -u bob wählt alle Prozesse von bob aus, nicht eine einzelne Anwendung.

killall -HUP rsyslogd sendet HUP an die passenden Protokollierungsprozesse. Die Wirkung von HUP hängt von der Anwendung ab: Prüfe, ob sie das Neuladen unterstützt, bevor du das Signal wie einen Neuladebefehl behandelst. Verwende für einen von systemd verwalteten Dienst sudo systemctl stop NAME; die Dienstverwaltung behandelt die Prozessgruppe des Dienstes und wertet den angeforderten Stopp nicht als Fehler, den sie automatisch beheben muss.

Berechtigungen und Zustände verstehen

Ein reguläres Konto steuert normalerweise seine eigenen Prozesse. Der Versuch, einem Prozess eines anderen Kontos ein Signal zu senden, kann „Operation not permitted“ ausgeben; sudo verschafft bei Bedarf root-Rechte. Prüfe das Ziel, bevor du diese Rechte nutzt, denn der Stopp des falschen Dienstes betrifft andere Benutzer.

Ein Prozess im Zustand D kann nach SIGKILL sichtbar bleiben, während er auf eine Antwort des Speichers wartet. Ein erneutes Senden des Signals repariert den Speicher nicht. Ein Zombieprozess im Zustand Z ist bereits beendet; sein Elternprozess muss seinen Rückgabestatus abholen. Verschwindet der Prozess nicht, ist es daher wichtig, seinen Zustand zu untersuchen.

Tastenkombinationen richten sich an die Vordergrundprozessgruppe. Strg+C beendet die Arbeit normalerweise; Strg+Z pausiert sie und erhält ihren Arbeitsspeicher und ihre geöffneten Dateien. Das Schließen des Terminals führt häufig zu HUP und zur Beendigung der zugehörigen Jobs, weshalb lange Aufgaben bewusst behandelt werden müssen.

Wichtige Erkenntnisse

  • SIGTERM fordert zum Aufräumen auf; SIGKILL erzwingt das Ende ohne Aufräumen.
  • Prüfe Mustertreffer und bestätige die PID, bevor du ein Signal sendest.
  • SIGSTOP pausiert und SIGCONT setzt fort; kill kann mehr als beenden.
  • Ein Zombieprozess lässt sich nicht erneut beenden, und das Warten auf Speicherzugriffe kann die Beendigung verzögern.
  • Verwende systemctl stop für einen verwalteten Dienst.

1.4 Jobs im Hintergrund ausführen und Prioritäten festlegen

Ein Vordergrundjob belegt das Terminal, bis er endet oder angehalten wird. Bei einem Hintergrundjob kann die Shell während seiner Ausführung einen weiteren Befehl annehmen. Die Jobsteuerung ändert, wo Arbeit ausgeführt wird; die CPU-Priorität ändert, wie sie mit anderer Arbeit konkurriert.

Arbeit zwischen Vorder- und Hintergrund verschieben

Ein kaufmännisches Und startet einen Befehl im Hintergrund:

sleep 300 &

Die Shell könnte [1] 6431 ausgeben. Dabei ist 1 die lokale Jobnummer und 6431 die systemweite PID. jobs listet nur die Jobs dieser Shell auf. fg %1 holt Job 1 in den Vordergrund. Pausierst du diesen Vordergrundjob mit Strg+Z, setzt bg %1 ihn im Hintergrund fort. Ohne Nummer wählen fg und bg den mit + markierten Job.

Probiere die Folge mit sleep 300 aus: Führe den Befehl im Vordergrund aus, drücke Strg+Z, führe bg aus, sieh dir jobs an, führe dann fg aus und drücke Strg+C. „Stopped“ bedeutet pausiert, nicht beendet. Ein angehaltener Job verbraucht keine CPU-Zeit, belegt aber weiterhin Arbeitsspeicher und hält Dateien geöffnet. Bash kann beim Versuch, die Shell zu verlassen, mit „There are stopped jobs“ warnen.

Ausgabe und Abmeldung steuern

Ein Hintergrundbefehl kann weiterhin in das Terminal ausgeben. Leite für eine lange Aufgabe beide Ausgabeströme um:

./report.sh > report.log 2>&1 &

Die erste Umleitung sendet die normale Ausgabe an die Datei. 2>&1 sendet die Fehlerausgabe an dasselbe Ziel. Das abschließende & gibt die Eingabeaufforderung zurück, während die Aufgabe läuft.

Die Ausführung im Hintergrund allein schützt einen Job nicht vor dem Schließen des Terminals. Um Arbeit zu starten, die SIGHUP ignoriert, verwende:

nohup ./long-task.sh > task.log 2>&1 &

Ohne ausdrückliche Ausgabeumleitung schreibt nohup Ausgaben, die für das Terminal bestimmt sind, gewöhnlich nach nohup.out. In Bash entfernt disown %1 einen vorhandenen Job aus der Jobtabelle der Shell, sodass Bash HUP nicht an ihn weiterleitet. Das Programm benötigt weiterhin nutzbare Ein- und Ausgabeziele. Ein Programm, das dauerhaft laufen soll, wird besser als Dienst verwaltet.

Interaktiver Arbeit Raum geben

Der Nice-Wert drückt die CPU-Scheduling-Priorität für gewöhnliche Prozesse aus. Die Werte reichen von -20, der höchsten Priorität, bis 19, der niedrigsten Priorität; der übliche Startwert ist 0. Höhere Werte geben konkurrierender Arbeit mehr Gelegenheit zur Ausführung. Ein Prozess mit Nice-Wert 19 kann eine ansonsten untätige CPU weiterhin vollständig nutzen.

nice -n 10 xz -9 big.log
renice -n 15 -p 6431

Der erste Befehl startet die Komprimierung mit einer positiven Anpassung des Nice-Werts; vom üblichen Wert 0 aus wird er zu 10. Der zweite ändert den Nice-Wert des laufenden Prozesses auf 15. nice ohne -n wendet eine Anpassung um 10 an. Ein gewöhnlicher Benutzer kann den Nice-Wert seines eigenen Prozesses grundsätzlich erhöhen und damit dessen CPU-Priorität senken. Um die Priorität durch Senken des Werts zu erhöhen, ist normalerweise root nötig, zum Beispiel sudo renice -n -5 -p 6431.

In top zeigt NI den Nice-Wert; bei gewöhnlichen Prozessen im Zeitteilungsbetrieb ist PR üblicherweise 20 plus NI. Nice-Wert 10 erscheint daher als PR 30. In ps aux markiert N eine verringerte und < eine erhöhte Priorität. Der Nice-Wert beeinflusst die Konkurrenz um CPU-Zeit, nicht die Priorität von Datenträgerzugriffen; ionice steuert eine gesonderte Ressource.

Wichtige Erkenntnisse

  • & startet Arbeit im Hintergrund; jobs, fg und bg verwenden shellinterne Jobnummern.
  • Strg+Z pausiert einen Job; es beendet ihn nicht.
  • Setze Ausgabeumleitung und nohup für eine lange Terminalaufgabe bewusst ein.
  • Höhere Nice-Werte senken die CPU-Priorität bei Konkurrenz, nicht die maximale Geschwindigkeit auf einer untätigen CPU.
2

Hardware über die Befehlszeile untersuchen

Hardwareinformationen helfen dir, ein kompatibles Paket auszuwählen, den Ressourcenverbrauch zu beurteilen und einen Fehler klar zu beschreiben. Linux stellt den laufenden Kernel, die CPU-Anordnung, den nutzbaren Arbeitsspeicher und die angeschlossenen Geräte über Befehlszeilenwerkzeuge dar. Du unterscheidest logische CPUs von physischen Kernen, dezimale Speicherangaben von binären Größen und ein erkanntes Gerät von einem Gerät mit funktionierendem Treiber. Dieselben Prüfungen helfen auch bei virtueller Hardware.

2.1 Prozessor, Arbeitsspeicher und System identifizieren

Bevor du Software installierst oder Ressourcen für eine Arbeitslast dimensionierst, finde heraus, was das System tatsächlich bietet. Die Architektur bestimmt, welche Pakete mit Maschinencode laufen. Die Verfügbarkeit von CPUs hilft, die Systemlast zu erklären, und der nutzbare Arbeitsspeicher begrenzt, welche Arbeit hineinpasst.

Kernel und Distribution unterscheiden
BefehlInformation
uname -rVersion des laufenden Kernels, etwa 6.8.0-45-generic
uname -mArchitektur, etwa x86_64 oder aarch64
uname -aAlle uname-Felder
cat /etc/os-releaseName und Version der Distribution
hostnamectlÜbersicht über Host, Betriebssystem, Kernel und Architektur

Ubuntu 24.04 ist eine Distributionsversion; ein Wert wie 6.8.0-45-generic identifiziert den darin laufenden Kernel. Die Installation eines neuen Kernels wechselt den laufenden Kernel nicht sofort: Das geschieht beim Neustart.

Architekturbezeichnungen unterscheiden sich zwischen Paketfamilien. Debian-Pakete verwenden amd64 für die von uname als x86_64 gemeldete Architektur und arm64 für aarch64. RPM-Pakete verwenden üblicherweise direkt x86_64 und aarch64. Prüfe vor der Installation, ob der Build zum Rechner passt.

Kerne und logische CPUs zählen

lscpu meldet Architektur, Modell, Sockel, Kerne pro Sockel, Threads pro Kern und logische CPUs. Für eine einheitliche CPU-Anordnung gilt:

logische CPUs=Sockel×Kerne pro Sockel×Threads pro Kern

Ein Sockel mit sechs Kernen und zwei Threads pro Kern ergibt 12 logische CPUs. Es bleiben sechs physische Kerne. Zwei Hardware-Threads teilen sich Ressourcen innerhalb eines Kerns, sodass 12 logische CPUs nicht die doppelte Leistung von sechs Kernen versprechen.

nproc meldet die dem aktuellen Prozess verfügbaren Verarbeitungseinheiten; CPU-Affinität oder Ressourcenbeschränkungen können diesen Wert gegenüber der Anzahl im gesamten Rechner verringern. /proc/cpuinfo liefert CPU-Details direkt. Auf x86 zählt grep -c ^processor /proc/cpuinfo die Prozessoreinträge, und die Kennzeichen vmx oder svm zeigen Unterstützung für Hardwarevirtualisierung an. ARM stellt andere Felder bereit.

Nutzbaren und installierten Arbeitsspeicher ablesen

free -h liefert eine praktische Arbeitsspeicherübersicht. /proc/meminfo bietet Details: MemTotal ist der nutzbare Arbeitsspeicher und MemAvailable schätzt die Kapazität, die neue Arbeit nutzen kann. Diese Datei bezeichnet ihre Werte mit kB, es handelt sich aber um Kibibyte mit jeweils 1.024 Byte.

Zum Beispiel entspricht MemTotal: 16303448 kB nach zweimaliger Division durch 1.024 etwa 15,5 GiB. Ein Rechner mit 16 GiB physischen Modulen kann weniger nutzbaren Arbeitsspeicher anzeigen, weil Firmware und Kernel einen Teil reservieren.

Um installierte Module und Steckplätze zu untersuchen, führe sudo dmidecode -t memory aus. sudo dmidecode -t system meldet die von der Firmware bereitgestellten Hersteller-, Modell- und Seriendaten. Eine virtuelle Maschine meldet ihre virtuelle Hardware. sudo lshw -short liefert, sofern installiert, eine kompakte Hardwareübersicht.

Eine Anforderung in einzelnen Schritten prüfen

Angenommen, Software benötigt ein 64-Bit-ARM-System, mindestens vier verfügbare CPUs und 8 GB Arbeitsspeicher. Gibt uname -m den Wert aarch64 zurück, ist die Architekturanforderung erfüllt. Gibt nproc 4 zurück, ist die CPU-Anforderung erfüllt. Insgesamt 3.7Gi entsprechen nur etwa 4,0 GB, der Arbeitsspeicher reicht also nicht aus. Zwei bestandene Prüfungen können die dritte, nicht bestandene Prüfung nicht ausgleichen.

Wichtige Erkenntnisse

  • Verwende /etc/os-release für die Distribution und uname -r für den laufenden Kernel.
  • Paketarchitekturbezeichnungen unterscheiden sich: Debian amd64 entspricht x86_64.
  • Sockel, Kerne und Hardware-Threads bestimmen die Anzahl logischer CPUs.
  • nproc meldet die dem aktuellen Prozess verfügbaren CPUs.
  • Der nutzbare Arbeitsspeicher kann kleiner sein als der installierte; /proc/meminfo verwendet binäre Kilobyte.

2.2 Datenträger, PCI- und USB-Geräte sowie ihre Treiber auflisten

Linux gibt Hardwaregeräten Namen unter /dev und stellt seine Gerätesicht unter /sys bereit. Verschiedene Auflistungswerkzeuge beantworten unterschiedliche Fragen: Welche Speichergeräte gibt es, welche Busse haben Geräte erkannt und welche Treiber steuern sie?

Datenträger und Partitionen identifizieren

SATA-, SAS- und USB-Datenträger erscheinen gewöhnlich als /dev/sda, /dev/sdb und mit weiteren Buchstaben. Ihre Partitionen erhalten eine zusätzliche Nummer, etwa /dev/sda1. NVMe verwendet Namen wie /dev/nvme0n1, mit /dev/nvme0n1p1 für eine Partition. Eine virtuelle Maschine kann /dev/vda verwenden.

lsblk zeigt Blockgeräte als Baum. TYPE unterscheidet einen Datenträger von einer Partition; RM kennzeichnet Wechselmedien und RO den schreibgeschützten Zustand. SIZE gibt die Kapazität an und MOUNTPOINTS zeigt, wo ein Gerät verwendet wird. Zusätzliche Details wählst du mit:

lsblk -o NAME,SIZE,MODEL
lsblk -f

Der erste Befehl erleichtert den Vergleich von Modell und Größe. Der zweite ergänzt Dateisystemtyp, Bezeichnung und UUID. Namen wie sdb können sich mit der Erkennungsreihenfolge ändern. Bevor du einen Datenträger beschreibst, bestätige seine Identität anhand weiterer Merkmale als des Buchstabens: Das Beschreiben des falschen Geräts zerstört dessen Daten.

Ein als 512 GB verkauftes Laufwerk enthält 512 Milliarden Byte. In GiB sind das etwa 476,8, was lsblk als 476.8G anzeigt. Das Gerät hat keine Kapazität verloren: Seine Beschriftung und die Anzeige verwenden verschiedene Einheiten.

Geräte und gebundene Treiber finden
WerkzeugWorauf du achtest
lspciPCI- und PCI-Express-Geräte, etwa Netzwerk- und Speichercontroller
lspci -kDer verwendete Treiber und mögliche Kernelmodule
lsusbUSB-Geräte-IDs und -Beschreibungen
lsusb -tUSB-Verbindungen als Baum, einschließlich Geschwindigkeiten
lsmodGeladene Kernelmodule
modinfo e1000eInformationen über ein Modul

Eine USB-ID wie 046d:c52b identifiziert Hersteller und Produkt zuverlässiger als eine allgemeine Bezeichnung wie „Funkempfänger“. Unterscheide in der PCI-Ausgabe Kernel modules, das mögliche Module nennt, von Kernel driver in use, das einen gebundenen Treiber angibt. Die Erkennung allein ist nicht gleichbedeutend mit funktionierender Unterstützung.

Die meisten Treiber lassen sich als Kernelmodule laden, also als Teile des Kernelcodes, die bei Bedarf hinzugefügt werden. Das Laden oder Entfernen von Modulen verändert den laufenden Kernel und erfordert root-Rechte. Manche Treiber sind stattdessen fest in den Kernel eingebaut. Auf ARM-Platinen liegen viele eingebaute Geräte nicht an PCI, sodass eine kurze lspci-Liste nicht bedeuten muss, dass Hardware fehlt.

Eine Verbindung im Kernel-Protokoll verfolgen

Wenn ein USB-Datenträger eingesteckt wird, führe sudo dmesg | tail aus oder starte sudo dmesg -w vor dem Anschließen. Eine Meldung wie [sdb] 60437492 512-byte logical blocks identifiziert den neuen Datenträger als /dev/sdb und gibt seine Kapazität an. Multipliziert man die Blockanzahl mit der Blockgröße, ergibt das 30.943.995.904 Byte: etwa 30,9 GB oder 28,8 GiB.

Vergleiche dann den neuen lsblk-Eintrag mit dieser Meldung und dem Gerätemodell. Funktioniert ein erkannter Adapter nicht, prüfe den Treiber mit lspci -k und lies Initialisierungsfehler mit dmesg. Ein fehlender gebundener Treiber und ein Treiber, der einen Fehler meldet, erfordern unterschiedliche weitere Prüfungen.

Wichtige Erkenntnisse

  • Verwende lsblk für Blockgeräte, lspci für PCI und lsusb für USB.
  • Datenträgernamen folgen der Erkennungsreihenfolge; überprüfe das Gerät vor dem Beschreiben.
  • Ein dezimales 512-GB-Laufwerk entspricht etwa 476,8 GiB.
  • Prüfe nach der Erkennung eines Geräts den gebundenen Treiber und die Kernelmeldungen.
3

Software mit Paketmanagern installieren und verwalten

Ein Paketmanager verbindet Softwaredateien mit ihren Versionen, Abhängigkeiten und vertrauenswürdigen Quellen. Wählst du das richtige Werkzeug für die Distribution, kannst du Software installieren und pflegen, ohne jede Bibliothek selbst nachverfolgen zu müssen. Du lernst die Befehlsfamilien von Debian und Red Hat kennen, unterscheidest das Aktualisieren der Paketinformationen vom Einspielen von Aktualisierungen und verfolgst einen installierten Befehl bis zu dem Paket und der Transaktion zurück, die ihn bereitgestellt haben.

3.1 Softwarepakete, Paketquellen und Abhängigkeiten verstehen

Ein Softwarepaket bündelt Softwaredateien mit Informationen, die zu ihrer Installation und Pflege verwendet werden. Seine Metadaten nennen Version, Architektur und benötigte Pakete, und es kann Installationsskripte enthalten. Ein Paketmanager verzeichnet, welche Dateien zu welchem installierten Paket gehören.

Die passende Distributionsfamilie finden
SystemePaketformatWerkzeug für PaketquellenGrundlegendes Werkzeug
Debian, Ubuntu, Linux Mint.debaptdpkg
Fedora, RHEL, Rocky Linux, AlmaLinux, CentOS Stream.rpmdnfrpm
openSUSE, SUSE Linux Enterprise.rpmzypperrpm

Arch Linux verwendet pacman; Alpine Linux verwendet apk. Der ältere Name yum gehört zur Red-Hat-Familie. Bist du nicht sicher, welches System du hast, lies vor der Auswahl der Befehle die Ausgabe von cat /etc/os-release.

Eine Datei wie nginx_1.24.0-2_amd64.deb nennt nginx, seine Softwareversion, Paketierungsrevision und Architektur. Diese Felder helfen dem Paketmanager, einen kompatiblen Build auszuwählen. Ein vertrauter Anwendungsname macht nicht jedes heruntergeladene Paket für jede Distribution geeignet.

Abhängigkeiten vom übergeordneten Werkzeug auflösen lassen

Eine Abhängigkeit ist ein anderes Paket, das die Software benötigt, häufig eine gemeinsam genutzte Bibliothek. Bei der Installation einer Anwendung können daher mehrere Pakete hinzukommen. Ein übergeordnetes Werkzeug wie apt oder dnf findet eine kompatible Zusammenstellung, lädt sie herunter und beauftragt das grundlegende Werkzeug mit der Installation.

dpkg und rpm arbeiten mit lokalen Paketdateien und verwalten die Datenbank installierter Pakete. Sie laden fehlende Abhängigkeiten nicht aus Paketquellen nach. Installierst du damit eine Datei, können Anforderungen offenbleiben, die du auflösen musst. Übergeordnete Werkzeuge können ebenfalls lokale Dateien installieren und dabei ihre Anforderungen aus konfigurierten Paketquellen auflösen.

Suchen und Abfragen funktionieren als regulärer Benutzer. Installation, Entfernung und Aktualisierung verändern Systemdateien und benötigen normalerweise sudo. Die Bestätigungsanzeige liefert nützliche Informationen: Prüfe die zusätzlichen Pakete und vorgeschlagenen Entfernungen, bevor du zustimmst.

Vertrauen in Paketquellen verstehen

Eine Paketquelle stellt Paketdateien und Indizes bereit, die verfügbare Versionen und Abhängigkeiten beschreiben. Die eigenen Paketquellen einer Distribution bieten eine Zusammenstellung, die für ihre jeweilige Version erstellt wurde.

APT prüft signierte Metadaten der Paketquelle und gleicht die Prüfsummen daraus mit den heruntergeladenen Dateien ab. Eine gesonderte Signatur auf jeder .deb-Datei prüft es normalerweise nicht. DNF prüft normalerweise die RPM-Signaturen der Distribution; die Signaturprüfung der Metadaten der Paketquelle wird separat konfiguriert. Diese Prüfungen stellen eine Vertrauenskette zu einem vertrauenswürdigen Herausgeber her und helfen, Manipulationen zu erkennen.

Wenn du eine Paketquelle eines Drittanbieters hinzufügst, vertraust du auch dessen Software und Installationsskripten. Beschaffe seinen Signaturschlüssel anhand der echten Anleitung des Herausgebers. Umgehe Signaturprüfungen nicht, um einen Fehler wie „NO_PUBKEY“ zu überwinden. Auch eine Datei von einer unbekannten Downloadseite braucht eine vertrauenswürdige Herkunft; die Paketendung allein bietet dieses Vertrauen nicht.

Nach dem richtigen Namen suchen

Software- und Paketnamen können sich unterscheiden. Apache wird auf Systemen der Debian-Familie als apache2 und auf Systemen der Red-Hat-Familie als httpd paketiert. Der Befehl dig stammt aus bind9-dnsutils oder bind-utils. Suche, bevor du annimmst, dass ein Befehlsname zugleich sein Paketname ist.

Andere Installationssysteme führen getrennte Verzeichnisse. Snap, Flatpak und AppImage bündeln Anwendungen mit vielen Abhängigkeiten; pip und npm verwalten Programmbibliotheken. Die Installation einer Python-Bibliothek mit pip macht sie nicht zu einem von apt verwalteten Paket.

Wichtige Erkenntnisse

  • Verwende die zu /etc/os-release passende Paketfamilie und das zugehörige Werkzeug für Paketquellen.
  • Übergeordnete Werkzeuge laden Abhängigkeiten; dpkg und rpm arbeiten mit lokalen Paketen und Einträgen.
  • Paketquellen stellen Paketindizes und eine Vertrauenskette zu einem Herausgeber bereit.
  • Paketnamen können sich von Programmnamen und zwischen Distributionen unterscheiden.
  • Systempaketmanager und Paketmanager für Anwendungen oder Programmiersprachen führen getrennte Verzeichnisse.

3.2 Software mit apt und dnf installieren, aktualisieren und entfernen

Die Paketpflege umfasst drei getrennte Aufgaben: herausfinden, was verfügbar ist, ausgewählte Änderungen anwenden und nicht mehr benötigte Software entfernen. Lies die geplante Transaktion vor der Bestätigung, besonders wenn sie Pakete entfernt.

Paketlisten und Software aktualisieren
AufgabeDebian-FamilieRed-Hat-Familie
Paketlisten aktualisierensudo apt updateDNF aktualisiert veraltete Metadaten automatisch
Aktualisierungen einspielensudo apt upgradesudo dnf upgrade
nginx installierensudo apt install nginxsudo dnf install nginx
nginx entfernensudo apt remove nginxsudo dnf remove nginx
Nicht benötigte Abhängigkeiten entfernensudo apt autoremovesudo dnf autoremove

apt update aktualisiert keine Software. Es lädt aktuelle Paketlisten herunter. Führe danach sudo apt upgrade aus, um neuere Versionen zu installieren. Der Aktualisierungsbefehl von DNF kümmert sich dabei um veraltete Metadaten der Paketquelle. DNF4 verwendet dnf check-update, um verfügbare Änderungen aufzulisten; DNF5 verwendet dnf check-upgrade.

apt upgrade entfernt kein installiertes Paket, um eine Aktualisierung abzuschließen. Ein Paket, das eine solche Änderung benötigt, kann zurückgehalten werden. sudo apt full-upgrade erlaubt Entfernungen, prüfe daher den Plan sorgfältig. -y akzeptiert eine Transaktion automatisch und nimmt dir die Möglichkeit, sie interaktiv zu prüfen.

Aus einer Paketquelle oder einer lokalen Datei installieren

Führe auf Ubuntu sudo apt update und danach sudo apt install htop aus. APT listet neue Pakete und Abhängigkeiten vor dem Herunterladen auf. htop --version prüft das installierte Programm. Verwende auf Fedora sudo dnf install htop.

Führst du apt install für ein vorhandenes Paket aus, kann es auf den aktuellen Installationskandidaten aktualisiert werden; ist diese Version bereits installiert, ändert sich nichts. Um eine vertrauenswürdige lokale Datei zu installieren, gib ihren Pfad an:

sudo apt install ./app_2.1.0_amd64.deb
sudo dnf install ./app-2.1.0-1.x86_64.rpm

Das ./ kennzeichnet einen Dateipfad. Dagegen laden sudo dpkg -i file.deb und sudo rpm -i file.rpm fehlende Abhängigkeiten nicht herunter. Lässt dpkg Abhängigkeiten unerfüllt, kann sudo apt --fix-broken install sie auflösen; prüfe die vorgeschlagene Reparatur.

Software und Einstellungen bewusst entfernen

APT-remove behält die verwaltete Systemkonfiguration des Pakets; purge entfernt auch diese. Keiner der beiden Befehle entfernt Dateien aus den Home-Verzeichnissen der Benutzer. Autoremove zielt auf automatisch installierte Abhängigkeiten, die von installierten Paketen nicht mehr benötigt werden. Dies ist eine andere Entscheidung als das Entfernen einer Anwendung anhand ihres Namens.

APT-Quelleneinträge liegen in /etc/apt/sources.list und /etc/apt/sources.list.d/; Ubuntu 24.04 verwendet gewöhnlich ubuntu.sources in diesem Verzeichnis. Aktualisiere die Paketlisten nach Änderungen an den Quellen. DNF liest .repo-Dateien unter /etc/yum.repos.d/; dnf repolist zeigt aktivierte Paketquellen.

Die Wartung sauber abschließen

apt ist für die interaktive Nutzung ausgelegt. Skripte verwenden im Allgemeinen die stabileren Schnittstellen von apt-get und apt-cache. Ihre Befehle decken dieselben grundlegenden Aufgaben ab, auch wenn sich Standardeinstellungen unterscheiden können.

Ein neu installierter Kernel wird nach einem Neustart zum laufenden Kernel. Programme, die ersetzte Bibliotheken nutzen, müssen neu gestartet werden, um den neuen Code zu laden. Ubuntu kann einen nötigen Neustart mit /var/run/reboot-required anzeigen.

Eine Paketverwaltungssperre bedeutet oft, dass eine automatische Aktualisierung oder ein anderer Paketvorgang aktiv ist. Warte, bis er abgeschlossen ist; das Löschen der Sperrdatei kann Paketeinträge beschädigen. Ein Berechtigungsfehler weist dagegen auf fehlende Rechte hin. Prüfe daher, ob der Vorgang sudo benötigt.

Wichtige Erkenntnisse

  • apt update aktualisiert Listen; apt upgrade verändert installierte Software.
  • DNF aktualisiert veraltete Metadaten während der Paketaktualisierung; DNF4 und DNF5 benennen die Suche nach Aktualisierungen unterschiedlich.
  • APT remove behält die verwaltete Systemkonfiguration; purge entfernt sie.
  • Verwende mit apt oder dnf einen Pfad, um eine lokale Datei zu installieren und Abhängigkeiten aufzulösen.
  • Prüfe Entfernungen bei einem vollständigen Upgrade und für autoremove vorgeschlagene Abhängigkeiten.
  • Warte, bis der Inhaber einer Paketverwaltungssperre fertig ist, und starte Programme oder den Rechner neu, wenn aktualisierter Code es erfordert.

3.3 Nach Paketen suchen und installierte Software untersuchen

Fehlt ein Befehl oder ändert sich eine Version, kannst du mit Paketabfragen vom Symptom aus rückwärts suchen. Entscheide zuerst, ob du Informationen aus Paketquellen, Informationen zu installierten Paketen oder die Paketzugehörigkeit einer bestimmten Datei benötigst.

Vor der Installation suchen

apt search json und dnf search json durchsuchen Paketnamen und -beschreibungen. Untersuche ein vielversprechendes Ergebnis mit apt show NAME oder dnf info NAME. Diese Befehle zeigen Details wie Version, Größe, Beschreibung und Paketquelle. Die Ausgabe von APT show listet auch Abhängigkeiten auf; DNF-Anforderungen lassen sich mit dnf repoquery --requires NAME abfragen.

Informationen aus Paketquellen beantworten, was du installieren könntest. Sie allein belegen nicht, was bereits installiert ist. apt policy NAME unterscheidet die installierte Version vom Installationskandidaten, der Version, die APT derzeit auswählen würde. apt list --upgradeable oder dnf list --upgrades zeigt installierte Pakete mit verfügbaren Aktualisierungen.

Installierte Pakete abfragen
FrageDebian-FamilieRed-Hat-Familie
Was ist installiert?apt list --installed oder dpkg -ldnf list --installed oder rpm -qa
Welche Version eines Pakets ist installiert?dpkg -l nginxrpm -q nginx
Welche Dateien stammen von htop?dpkg -L htoprpm -ql htop
Zu welchem Paket gehört diese installierte Datei?dpkg -S /usr/bin/htoprpm -qf /usr/bin/htop

In dpkg -l kennzeichnet der Status ii ein installiertes Paket. Die Richtung einer Abfrage ist wichtig: -L geht von einem Paket aus und listet seine Dateien auf; -S geht von einer Datei aus und findet das zugehörige Paket. Auf RPM-Systemen entspricht dem die Unterscheidung zwischen -ql und -qf.

Einen Befehl zu seinem Paket zurückverfolgen

Angenommen, which openssl gibt /usr/bin/openssl aus. Auf Debian identifiziert dpkg -S /usr/bin/openssl openssl als zugehöriges Paket. apt policy openssl zeigt dann die installierte Version, den Installationskandidaten und die Paketquellen. So vermeidest du die Annahme, dass der Name eines Befehls immer mit seinem Paketnamen übereinstimmen muss.

Bei einem fehlenden Befehl gibt es möglicherweise kein installiertes zugehöriges Paket, das sich abfragen lässt. dnf provides /usr/bin/rsync durchsucht Dateilisten der Paketquellen. Systeme der Debian-Familie bieten das separate Werkzeug apt-file: Nachdem sein Index mit sudo apt-file update aktualisiert wurde, findet apt-file search bin/rsync die Anbieter. Ubuntu kann auch ein Paket vorschlagen, wenn ein Befehl nicht gefunden wird.

Einen Fehler mit einer Transaktion in Verbindung bringen

APT zeichnet Transaktionen in /var/log/apt/history.log auf; dpkg zeichnet grundlegendere Aktionen in /var/log/dpkg.log auf. Bei DNF4 listet dnf history Transaktionen auf; DNF5 verwendet dnf history list. dnf history info 12 zeigt die in Transaktion 12 geänderten Pakete.

sudo dnf history undo 12 fordert die Rückgängigmachung dieser Transaktion an. Prüfe den Plan: Das Rückgängigmachen hängt davon ab, ob die benötigten Paketversionen noch verfügbar sind, und stellt keine beliebigen Anwendungsdaten wieder her. Lies zur Diagnose den Verlauf, bevor du eine weitere Änderung vornimmst. Eine kürzliche Bibliotheksaktualisierung kann erklären, warum sich das Verhalten eines Programms geändert hat, obwohl niemand die Hauptanwendung neu installiert hat.

Wichtige Erkenntnisse

  • Unterscheide Versionen in Paketquellen von der tatsächlich installierten Version.
  • Verwende dpkg -L oder rpm -ql, um die Dateien eines Pakets abzufragen.
  • Verwende dpkg -S oder rpm -qf, um das Paket einer installierten Datei abzufragen.
  • Für eine fehlende Datei brauchst du eine Anbietersuche in Paketquellen und keine Abfrage der installierten Paketzugehörigkeit.
  • Der Transaktionsverlauf hilft, ein neues Problem mit einer kürzlichen Paketänderung in Verbindung zu bringen.
4

Dienste mit systemd verwalten

Dienste leisten auch dann weiter nützliche Arbeit, wenn ein Benutzer das Terminal verlässt. systemd verwaltet ihren Start, ihren aktuellen Zustand und ihre Reaktion auf Fehler und beschreibt mithilfe von Unit-Dateien, was laufen soll. Du liest den Status, ohne ihn mit der Konfiguration für den Systemstart zu verwechseln, steuerst Dienste jetzt und bei künftigen Systemstarts und nimmst kleine Konfigurationsänderungen vor, die Paketaktualisierungen überstehen. Eine einfache Dienstdatei zeigt, wie diese Einstellungen zusammenpassen.

4.1 systemd, Units und den Dienststatus verstehen

Ein Dienst, oft Daemon genannt, stellt eine Hintergrundfunktion bereit, etwa Webseiten auszuliefern oder SSH-Verbindungen anzunehmen. Er hat gewöhnlich kein Terminal. Viele Daemon-Namen enden auf d, wie sshd und chronyd.

Die Dienstverwaltung finden

Auf den meisten verbreiteten Distributionen läuft systemd als PID 1 und startet Dienste in der erforderlichen Reihenfolge. Prüfe das mit ps -p 1 -o comm=. systemd kann Prozesse überwachen, fehlgeschlagene Dienste neu starten und das Sammeln ihrer Protokolle organisieren. Manche Distributionen verwenden eine andere Verwaltung, etwa OpenRC von Alpine Linux.

systemd verwaltet Units. Ihre Endungen kennzeichnen ihre Aufgaben:

EndungAufgabe
.serviceEin Programm oder eine Aufgabe ausführen und verwalten
.socketAn einem Socket lauschen und bei Bedarf einen Dienst aktivieren
.timerEine Aktivierung zeitlich planen
.mountEin eingehängtes Dateisystem darstellen
.targetUnits zu einem benannten Systemzustand gruppieren

In Dienstbefehlen ist nginx die Kurzform für nginx.service. Namen unterscheiden sich: SSH verwendet auf Debian und Ubuntu gewöhnlich ssh, auf Fedora und RHEL sshd. Apache heißt apache2 oder httpd. systemctl list-unit-files | grep ssh hilft, den lokalen Namen zu finden.

Die zwei wichtigen Statuszeilen lesen

Führe systemctl status nginx aus. Eine Beispielausgabe kann enthalten:

Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: enabled)
Active: active (running) since Wed 2026-10-21 09:14:03 UTC
Main PID: 2410 (nginx)

Loaded nennt die Unit-Datei und ihren Aktivierungszustand. Active meldet den aktuellen Zustand und seit wann er besteht. Main PID bezeichnet den Hauptprozess; es folgen aktuelle Protokollzeilen. Ein regulärer Benutzer kann den Status untersuchen, für die Einsicht in Systemprotokolle können aber zusätzliche Rechte nötig sein.

Aktiv und aktiviert sind unabhängig voneinander. Aktiv beschreibt die Gegenwart. Aktiviert bedeutet, dass Aktivierungslinks erstellt wurden, meist damit ein Target den Dienst beim Systemstart startet. Ein deaktivierter Dienst kann dennoch von Hand gestartet oder von einer anderen Unit aktiviert werden. Ein aktivierter Dienst kann gestoppt oder fehlgeschlagen sein.

Den Zustand richtig deuten
AktivitätszustandBedeutung
active (running)Das Programm des Dienstes läuft
active (exited)Eine abgeschlossene Aufgabe gilt weiterhin als aktiv
inactive (dead)Der Dienst ist nicht aktiv
failedEin Start oder eine Ausführung ist fehlgeschlagen; untersuche Ergebnis und Protokolle
activatingDer Start läuft

Die Farbe des Statuspunkts hilft beim schnellen Erfassen, aber der Zustandstext ist der aussagekräftige Beleg. systemctl is-active nginx meldet den aktuellen Zustand; systemctl is-enabled nginx meldet die Aktivierung. static bedeutet, dass die Unit keine Aktivierungsanweisungen hat und auf einem anderen Weg aktiviert werden kann. masked bedeutet, dass ihr Start blockiert ist.

Die passende Übersicht wählen

systemctl list-units --type=service zeigt aktuell geladene Service-Units mit der standardmäßigen Zustandsfilterung. Ergänze --all, um inaktive geladene Units einzubeziehen, oder --state=running, um dich auf laufende Dienste zu konzentrieren. systemctl --failed zeigt ausschließlich fehlgeschlagene Units. systemctl list-unit-files --type=service listet installierte Service-Dateien und Aktivierungszustände auf, einschließlich der Dienste, die gerade nicht laufen.

Wichtige Erkenntnisse

  • systemd verwaltet Units; eine .service-Unit beschreibt ein Programm oder eine Aufgabe.
  • Lies Loaded für die Unit-Datei und Aktivierung und Active für den aktuellen Zustand.
  • Ein aktivierter Dienst kann gestoppt sein; ein deaktivierter Dienst kann laufen.
  • active (exited) kann eine erfolgreich abgeschlossene Aufgabe beschreiben.
  • Verwende list-unit-files für installierte Definitionen und list-units für geladene Units.

4.2 Dienste starten, stoppen, aktivieren und deaktivieren

Die Dienststeuerung betrifft zwei Zeitpunkte: Was soll jetzt laufen und was später automatisch gestartet werden? Halte diese Entscheidungen getrennt, wenn du Software installierst oder einen Dienst reparierst.

Den aktuellen Zustand steuern
BefehlWirkung
sudo systemctl start nginxJetzt starten
sudo systemctl stop nginxJetzt stoppen
sudo systemctl restart nginxStoppen und starten, wobei die laufende Arbeit unterbrochen wird
sudo systemctl reload nginxEinen Dienst, der es unterstützt, zum erneuten Einlesen der Konfiguration auffordern
sudo systemctl reload-or-restart nginxWenn unterstützt neu laden, andernfalls neu starten

Verwende nach einer Änderung systemctl status nginx. Für eine stille Prüfung liefert systemctl is-active --quiet nginx Erfolg zurück, wenn der Dienst aktiv ist. Es gibt keinen Zustandstext aus und ist daher für Shellbedingungen nützlich.

Ob Neuladen unterstützt wird, hängt vom Dienst ab. Prüfe bei nginx eine geänderte Konfiguration mit sudo nginx -t vor sudo systemctl reload nginx. Ein erfolgreiches Neuladen kann neue Einstellungen anwenden, ohne den Dienst zu stoppen. Bei fehlerhafter Konfiguration behält nginx beim Neuladen die alte laufende Konfiguration; ein Neustart mit der fehlerhaften Datei kann dagegen zum Ausfall führen.

Automatischen Start konfigurieren

sudo systemctl enable nginx erstellt Aktivierungslinks; es startet nginx nicht jetzt. sudo systemctl disable nginx entfernt diese Links; es stoppt den aktuellen Prozess nicht. Um beide Änderungen zusammen vorzunehmen:

sudo systemctl enable --now nginx
sudo systemctl disable --now nginx

Der erste Befehl aktiviert und startet; der zweite deaktiviert und stoppt. Eine nginx-Installation auf Fedora lässt den Dienst gewöhnlich gestoppt und deaktiviert, während die Paketinstallation in der Debian-Familie ihn oft startet und aktiviert. Prüfe nach der Installation den tatsächlichen Zustand.

Nach dem Start eines Webdienstes kann curl -I http://localhost seine lokale Antwort prüfen. Ein lokaler Erfolg und der Zugriff von einem anderen Rechner sind verschiedene Prüfungen; eine Firewall kann den entfernten Zugriff weiterhin blockieren.

Aktivierung bei Bedarf blockieren

Deaktivieren verhindert nicht, dass eine Abhängigkeit oder ein Socket einen Dienst aktiviert. Maskieren blockiert den Start, indem der Unit-Name mit /dev/null verknüpft wird:

sudo systemctl mask bluetooth
sudo systemctl unmask bluetooth

Maskieren allein stoppt eine bereits laufende Unit nicht. Stoppe sie ebenfalls, wenn sie nicht weiterlaufen darf. Das Aufheben der Maskierung entfernt die Blockierung; es startet oder aktiviert den Dienst nicht von selbst. Der Startversuch einer maskierten Unit meldet, dass sie maskiert ist.

Den Standardsystemzustand wählen

Ein Target gruppiert Units. multi-user.target stellt die normale nicht grafische Mehrbenutzerumgebung bereit, die häufig auf Servern verwendet wird. graphical.target ergänzt den Desktop. systemctl get-default meldet das Standard-Target und sudo systemctl set-default multi-user.target ändert das für künftige Systemstarts gewählte Target; der aktuelle Desktop wird dadurch nicht sofort geschlossen.

sudo systemctl reboot startet den Rechner neu und sudo systemctl poweroff fährt ihn herunter. Verwende für einen einzelnen Dienst stattdessen dessen eigene Steuerbefehle. Das Beenden der PID eines verwalteten Dienstes kann einen automatischen Neustart auslösen; ein bewusstes systemctl stop weist systemd an, ihn gestoppt zu lassen.

Wichtige Erkenntnisse

  • Start und stop wirken auf die Gegenwart; enable und disable ändern Aktivierungslinks.
  • enable --now und disable --now verbinden beide Zeitpunkte.
  • Deaktivieren erlaubt andere Aktivierungswege; Maskieren blockiert den Start.
  • Maskieren allein lässt einen bereits laufenden Dienst weiterlaufen.
  • Prüfe die Anwendungskonfiguration vor dem Neuladen oder Neustarten.
  • Das Ändern des Standard-Targets legt das Verhalten bei künftigen Systemstarts fest.

4.3 Unit-Dateien lesen und anpassen

Eine Unit-Datei gibt systemd vor, wie ein Dienst auszuführen ist. Lies die wirksame Konfiguration mit systemctl cat NAME: Der Befehl gibt die Basisdatei und alle Überschreibungen mit ihren Pfaden aus.

Wissen, wohin Einstellungen gehören

Von Paketen bereitgestellte Units liegen unter /usr/lib/systemd/system/, auf Systemen der Debian-Familie auch über /lib/systemd/system/ erreichbar. Lokale Administratordateien und Überschreibungen gehören unter /etc/systemd/system/, das Vorrang hat. Eine Paketaktualisierung kann die eigene Datei ersetzen, daher solltest du lokale Änderungen in einer Überschreibung halten.

Eine Unit-Datei enthält Abschnitte und Einstellungen der Form Key=value:

AbschnittWichtige Einstellungen
[Unit]Description=, Reihenfolge mit After=, Abhängigkeiten mit Wants= oder Requires=
[Service]ExecStart=, User=, WorkingDirectory=, Environment=, Restart=
[Install]WantedBy=, beim Aktivieren der Unit verwendet

After=network.target legt die Reihenfolge fest; es startet dieses Target nicht selbst und garantiert keine Internetverbindung. WantedBy=multi-user.target weist enable an, einen Link unter multi-user.target.wants/ zu erstellen. Eine statische Unit hat keine Aktivierungsanweisungen, kann aber dennoch von einer anderen Unit aktiviert werden.

Einen einfachen Dienst erstellen

Bereite für einen kleinen Testserver zunächst /srv/hello mit lesbaren Dateien und einem Systemkonto vor:

sudo useradd --system --no-create-home hello

Wenn Python 3 unter /usr/bin/python3 installiert ist, schreibe /etc/systemd/system/hello-web.service:

[Unit]
Description=Hello web server
After=network.target

[Service]
ExecStart=/usr/bin/python3 -m http.server 8080 --directory /srv/hello
User=hello
Restart=on-failure

[Install]
WantedBy=multi-user.target

Führe sudo systemctl daemon-reload und danach sudo systemctl enable --now hello-web aus. Untersuche systemctl status hello-web und rufe http://localhost:8080 mit curl ab. Das Dienstkonto benötigt das Recht, das Verzeichnis zu lesen und seine übergeordneten Verzeichnisse zu durchqueren.

Bei der Standardeinstellung Type=simple bleibt das Programm im Vordergrund, damit systemd es verfolgen kann. ExecStart= akzeptiert einen absoluten Pfad zur ausführbaren Datei oder einen einfachen Dateinamen aus dem Suchpfad von systemd. Ein relativer Pfad mit Schrägstrich wie ./server ist ungültig. Ein Programm, das sich durch Forken in den Hintergrund versetzt, benötigt einen geeigneten Diensttyp wie Type=forking.

Eine Einstellung aus einem Paket überschreiben

sudo systemctl edit nginx öffnet ein Drop-in. Zum Beispiel:

[Service]
Restart=on-failure
RestartSec=5s

Das Speichern mit systemctl edit lädt die Unit-Konfiguration von systemd neu. Starte den Dienst neu, um geänderte Laufzeiteinstellungen anzuwenden. Wenn du Dateien direkt bearbeitest, führe vor dem Neustart selbst sudo systemctl daemon-reload aus. Dies lädt Unit-Definitionen neu, nicht die eigene Konfiguration der Anwendung.

Um eine Listeneinstellung wie ExecStart zu ersetzen, ist vor der neuen Zeile eine leere Zeile ExecStart= nötig. sudo systemctl revert nginx entfernt lokale Überschreibungen und stellt die Herstellerkonfiguration wieder her.

Restart=no lässt einen beendeten Prozess gestoppt. on-failure startet ihn nach entsprechenden Fehlern neu; always umfasst auch reguläre Beendigungen. Ein bewusstes systemctl stop unterdrückt den automatischen Neustart. Schnelle Fehlschläge können eine konfigurierte Begrenzung der Starthäufigkeit erreichen. Die Standardeinstellungen der Dienstverwaltung erlauben fünf Starts in 10 Sekunden; die lokale Konfiguration kann dies ändern. Behebe die Ursache, bevor du den Fehlerzustand zurücksetzt und es erneut versuchst.

Wichtige Erkenntnisse

  • Halte lokale Einstellungen unter /etc/systemd/system/ und untersuche sie mit systemctl cat.
  • Unit-Abschnitte trennen Beschreibung und Abhängigkeiten, Ausführung sowie Aktivierung.
  • Führe einen einfachen Dienst unter einem geeigneten Konto im Vordergrund aus.
  • Lade Unit-Definitionen nach direkten Änderungen neu und starte den Dienst dann neu, um Laufzeitänderungen anzuwenden.
  • Ein Drop-in übersteht Paketaktualisierungen; Listeneinstellungen benötigen möglicherweise eine leere Zeile zum Zurücksetzen.
  • Die Neustartrichtlinie behandelt Prozessenden, während Begrenzungen der Starthäufigkeit endlose schnelle Versuche verhindern.
5

Systemprotokolle zur Fehlerdiagnose auswerten

Der Zustand eines Dienstes zeigt dir, dass etwas fehlgeschlagen ist; Protokolle helfen zu erklären, warum. Linux zeichnet Meldungen im systemd-Journal, in Anwendungsprotokollen und im Kernel-Meldungspuffer auf. Du grenzt diese Aufzeichnungen nach Dienst, Systemstart, Zeit und Schweregrad ein und verbindest dann den ersten hilfreichen Fehler mit einer konkreten Prüfung. Bei einer systematischen Reparatur änderst du jeweils eine Ursache und überprüfst sowohl den laufenden Dienst als auch sein vorgesehenes Startverhalten.

5.1 Das systemd-Journal mit journalctl abfragen

Das systemd-Journal sammelt Kernel-, Systemstart- und Dienstmeldungen, einschließlich der Ausgaben, die verwaltete Programme an das Journal senden. systemd-journald speichert indizierte binäre Datensätze. Lies sie mit journalctl; ein Textdateibetrachter wie less kann die Journaldateien selbst nicht interpretieren.

Genug vom Protokoll lesen

Der Zugriff auf das Systemjournal hängt von Berechtigungen und der lokalen Richtlinie ab. root und berechtigte Gruppen wie systemd-journal oder adm können Systemeinträge lesen. Sieht ein reguläres Konto nur eine eingeschränkte Auswahl, verwende für die Systemuntersuchung sudo journalctl.

Die Standardansicht beginnt mit alten Meldungen in einem Pager. Nutze die Pfeiltasten zum Bewegen, / zum Suchen und q zum Beenden. Wähle eine gezieltere Ansicht:

OptionWirkung
-rNeueste zuerst
-eAns Ende springen
-n 50Letzte 50 Einträge
-fEintreffende Einträge bis Strg+C fortlaufend anzeigen
--no-pagerDirekt ausgeben, nützlich für Pipes

-n ohne Zahl wählt zehn Einträge aus. Die Statusausgabe zeigt oft nur einige aktuelle Zeilen. Lies daher das Journal, wenn diese Zeilen den Fehler nicht erklären.

Unit-, Systemstart- und Zeitfilter kombinieren

sudo journalctl -u nginx -b wählt nginx-Einträge dieses Systemstarts aus. -b -1 wählt den vorherigen Systemstart; --list-boots listet aufbewahrte Systemstartaufzeichnungen auf. -k wählt Kernelmeldungen aus und bezieht sich normalerweise auf den aktuellen Systemstart. Gib für ältere Kerneleinträge den Systemstart ausdrücklich an.

Zeitfilter akzeptieren relative Zeitangaben und vollständige Datumsangaben:

sudo journalctl -u nginx --since "2026-10-22 08:00" --until "2026-10-22 09:30"

--since today bedeutet seit Mitternacht heute, während --since "1 hour ago" ein mitlaufendes Zeitfenster angibt. Datums- und Uhrzeitangaben in Anführungszeichen bleiben als ein Argument zusammen. Ein Datum ohne Uhrzeit beginnt um Mitternacht.

Die Prioritätsschwelle verstehen

Prioritäten reichen von 0, Notfall, bis 7, Fehlersuche. Dazwischen liegen Alarm, kritisch, Fehler, Warnung, Hinweis und Information. Niedrigere Zahlen bedeuten einen höheren Schweregrad. -p err umfasst die Stufen 0 bis 3, nicht nur Fehler. Verwende einen ausdrücklichen Bereich wie -p err..warning, um diesen Bereich auszuwählen.

Ein enger Schweregradfilter kann die benötigten Hinweise ausblenden. SSH kann zum Beispiel Meldungen über fehlgeschlagene Passwörter auf Informationsstufe aufzeichnen. Auf Ubuntu findet sudo journalctl -u ssh --since today --grep "Failed password" passende Meldungen, ohne sie durch eine Warnungsschwelle auszuschließen.

Eine Zeile wie „Failed password for invalid user admin from 203.0.113.45“ nennt das versuchte Konto und die Quelladresse. Zeitstempel und Programm-PID ordnen sie in die umgebenden Aktivitäten ein. -o short-iso erleichtert den Vergleich vollständiger Datumsangaben; -o verbose zeigt Felder, -o json-pretty gibt strukturierte Einträge aus und -x ergänzt verfügbare Erklärungstexte.

Wissen, was einen Neustart übersteht

Persistente Journale liegen unter /var/log/journal/; flüchtige Journale unter /run/log/journal/ verschwinden beim Herunterfahren. Das Speicherverhalten wird durch Storage= in der journald-Konfiguration gesteuert. Ein aufgezeichneter Systemstart kann bedeuten, dass ältere Aufzeichnungen nie dauerhaft gespeichert oder bereits entfernt wurden.

journalctl --disk-usage zählt aktive und archivierte Journaldateien. sudo journalctl --vacuum-size=500M entfernt alte archivierte Dateien, um für sie eine Grenze von 500 MiB zu erreichen. Aktive Dateien werden dabei nicht entfernt, sodass die gemeldete Gesamtbelegung größer bleiben kann.

Wichtige Erkenntnisse

  • Filtere nach Unit, Systemstart und Zeit, bevor du die Priorität eingrenzt.
  • Eine Prioritätsschwelle umfasst schwerwiegendere Stufen, nicht nur die genannte Stufe.
  • Einträge auf Informationsstufe können die Ursache eines Problems enthalten.
  • Persistente Journale überstehen einen Neustart; flüchtige Journale nicht.
  • Die Journal-Bereinigung entfernt archivierte Dateien, während die Speicherplatzbelegung auch aktive Dateien zählt.

5.2 Protokolldateien in /var/log und Kernelmeldungen lesen

Das Journal ist nicht die einzige Protokollquelle. Manche Systeme betreiben zusätzlich rsyslog und Anwendungen können eigene Textprotokolle schreiben. Der Kernel hält einen separaten Meldungspuffer im Arbeitsspeicher. Wähle die Quelle, die das untersuchte Ereignis aufgezeichnet hat.

Das richtige Textprotokoll finden
QuelleÜblicher Speicherort
Allgemeine Debian-/Ubuntu-Meldungen bei konfiguriertem Syslog/var/log/syslog
Debian-/Ubuntu-Authentifizierung/var/log/auth.log
Debian-/Ubuntu-Kerneltextprotokoll/var/log/kern.log
Allgemeine Meldungen und Authentifizierung der RHEL-Familie/var/log/messages, /var/log/secure
APT- und dpkg-Aktionen/var/log/apt/history.log, /var/log/dpkg.log
DNF-Aktionen/var/log/dnf.log
nginx-Anfragen und -Probleme/var/log/nginx/access.log, /var/log/nginx/error.log

Ob eine Datei vorhanden ist, hängt von den installierten Protokolldiensten und ihrer Konfiguration ab. Debian 12 und neuer verlassen sich gewöhnlich auf das Journal, sofern rsyslog nicht installiert ist. Anwendungen können auf einem solchen Rechner dennoch eigene Protokolle führen.

Lies eine Textdatei mit sudo less /var/log/auth.log, untersuche ihr Ende mit sudo tail -n 20 /var/log/syslog oder verfolge neue Zeilen mit sudo tail -f /var/log/nginx/error.log. Um ein Wort unabhängig von der Groß- und Kleinschreibung auszuwählen, verwende sudo grep -i "error" /var/log/syslog.

Felder und ältere Dateien lesen

Ein klassisches Beispiel ist:

Oct 22 08:01:17 web1 sshd[3141]: Accepted publickey for alice from 198.51.100.7 port 50522 ssh2

Es enthält die Uhrzeit, den Host, das Programm mit PID und die Ereignismeldung. Manche Systeme verwenden stattdessen vollständige ISO-Zeitstempel mit Zeitzonenversatz. Die Meldung beschreibt eine erfolgreiche Schlüsselanmeldung, keinen fehlgeschlagenen Passwortversuch; liest du nur den Programmnamen, geht diese Unterscheidung verloren.

Logrotation begrenzt das Wachstum, indem alte Dateien umbenannt, neue erstellt und abgelaufene Dateien schließlich entfernt werden. Die Konfiguration von logrotate liegt in /etc/logrotate.conf und /etc/logrotate.d/. Eine Folge wie syslog, syslog.1 und syslog.2.gz umfasst aktuelle und ältere Einträge. Verwende zless oder zgrep für gzip-komprimierten Text, ohne ihn vorher zu entpacken. Eine Suche allein in der aktuellen Datei kann den Fehler von gestern übersehen.

Kernelereignisse lesen

Der Ringpuffer des Kernels enthält aktuelle Meldungen und überschreibt beim Füllen seine ältesten Einträge. Er zeichnet Geräteerkennung, Treiberfehler, Speicherfehler und Beendigungen durch den OOM-Killer auf. dmesg gibt ihn aus; verwende bei eingeschränktem Zugriff sudo. dmesg -T liefert lesbare Zeitangaben, dmesg -l err,warn wählt Fehler und Warnungen aus und dmesg -w zeigt neue Meldungen fortlaufend.

sudo journalctl -k liest vom Journal aufbewahrte Kerneleinträge. sudo journalctl -k -b -1 kann einen vorherigen Systemstart erreichen, den der aktuelle Ringpuffer nicht mehr enthält.

Verschwindet ein Java-Prozess, verbindet eine Kernelzeile wie „Out of memory: Killed process 4810 (java)“ sein Ende mit Speicherknappheit. Prüfe free -h und top und senke dann den Speicherbedarf oder ergänze Kapazität. Beginne bei Startproblemen eines Dienstes mit dem Journal der Unit; lies für anwendungsspezifische Details deren eigenes Fehlerprotokoll.

Nutze Rotation oder Einstellungen zur Aufbewahrung des Journals, um den Platzbedarf von Protokollen zu steuern. Das manuelle Löschen eines Textprotokolls entfernt Belege und kann dazu führen, dass sein Speicherplatz belegt bleibt, bis das schreibende Programm die Datei schließt.

Wichtige Erkenntnisse

  • Speicherorte von Textprotokollen hängen von der Protokollkonfiguration ab; Anwendungen können eigene Dateien führen.
  • Verwende less, tail und grep für Textprotokolle und zless oder zgrep für komprimierte ältere Protokolle.
  • Rotation verteilt den Verlauf von Ereignissen auf mehrere Dateien.
  • dmesg zeigt den aktuellen Kernelpuffer; das Journal kann frühere Systemstarts aufbewahren.
  • OOM-Meldungen des Kernels können erklären, warum eine Anwendung ohne eigene Fehlermeldung verschwunden ist.

5.3 Fehler bei einem Dienst Schritt für Schritt diagnostizieren

Wiederholte Neustarts erklären einen Fehler selten. Beginne mit dem sichtbaren Symptom, suche die Meldung, die seine Ursache nennt, und ändere eine Sache. Prüfe den reparierten Dienst dann sowohl über seine Verwaltung als auch anhand der Funktion, die er bereitstellt.

Einer wiederholbaren Untersuchung folgen
  1. Bestätige das Symptom: Zum Beispiel schlägt eine lokale Webanfrage fehl.
  2. Führe systemctl status NAME aus und lies Active, Result und den Rückgabecode.
  3. Lies sudo journalctl -u NAME -b oder mit -n 50 --no-pager die letzten 50 Einträge.
  4. Nutze das eigene Fehlerprotokoll und die Konfigurationsprüfung der Anwendung.
  5. Korrigiere eine erkannte Ursache und wiederhole die zugehörige Prüfung.
  6. Starte den Dienst oder starte ihn neu, prüfe den Status und teste die tatsächliche Funktion.
  7. Vergleiche systemctl is-enabled NAME mit dem vorgesehenen Verhalten beim Systemstart.

Lies den ersten aussagekräftigen Fehler des fehlgeschlagenen Versuchs. Eine spätere Zeile „Failed to start“ fasst das Ergebnis zusammen; sie nennt möglicherweise nicht die Ursache. Aufeinander abgestimmte Zeit- und Unit-Filter helfen, den letzten Versuch von älteren Fehlern zu unterscheiden.

Einen Portkonflikt untersuchen

Ein nginx-Neustart schlägt fehl. Sein Journal enthält „bind() to 0.0.0.0:80 failed (98: Address already in use).“ Auf diesem Port lauscht bereits etwas. Führe aus:

sudo ss -tlnp | grep ':80 '

Angenommen, der Befehl identifiziert apache2. Ist dieser Rechner für nginx vorgesehen und wird Apache nicht mehr benötigt, stoppt sudo systemctl disable --now apache2 Apache und entfernt seine Aktivierungslinks. Danach kann sudo systemctl start nginx den Port belegen. Prüfe systemctl status nginx und eine lokale Webanfrage.

Die Voraussetzung ist wichtig: Entferne keinen benötigten Dienst, nur damit ein zweiter startet. Müssen beide laufen, muss ihre Konfiguration zum Lauschen gezielt geändert werden. Das Protokoll zeigt den Ressourcenkonflikt, während die vorgesehene Rolle des Systems die Reparatur bestimmt.

Einen Konfigurationsfehler untersuchen

Angenommen, das Journal meldet eine unerwartete schließende Klammer in /etc/nginx/sites-enabled/default:24. Führe sudo nginx -t aus; der Befehl nennt dieselbe Datei und Zeile. Korrigiere die falsch platzierte Klammer, führe die Prüfung erneut aus und starte erst nach erfolgreicher Prüfung neu. So grenzt du die Änderung ein und vermeidest, eine bekanntermaßen laufende Konfiguration durch eine fehlerhafte zu ersetzen.

Mit dem Ergebniscode die Suche eingrenzen
Status oder ErgebnisNächste Prüfung
203/EXECPfad zur ausführbaren Datei, Ausführungsrecht und Möglichkeit, sie zu starten
217/USERKonto in User= und Möglichkeit, dessen Anmeldedaten einzurichten
1/FAILUREEigene Fehlermeldungen der Anwendung
oom-killOOM-Einträge des Kernels und Speicherverbrauch

Eine fehlende ausführbare Datei und ein Programm, das startet, aber seine Einstellungen zurückweist, sind verschiedene Fehler. Vergleiche bei „Permission denied“ die Ausgabe von ls -l und den Verzeichniszugriff mit dem konfigurierten Benutzer des Dienstes. Prüfe bei einem vollen Datenträger df -h, bei wenig Arbeitsspeicher free -h und bei CPU-Überlastung top.

Meldet systemd „start request repeated too quickly“, behebe zuerst die Ursache. Danach setzt sudo systemctl reset-failed NAME den Fehler und die Zähler für die Startbegrenzung zurück, sodass du den Dienst erneut starten kannst. Das Zurücksetzen des Zählers allein repariert das Programm nicht.

Wichtige Erkenntnisse

  • Bestätige das Symptom, untersuche den Status und lies den ersten Fehler, der die Ursache erklärt.
  • Nutze Anwendungsprüfungen und ändere jeweils eine Ursache.
  • Bei einem belegten Port musst du vor der Reparatur ermitteln, welches Programm dort lauscht.
  • Rückgabecodes unterscheiden Ausführungs-, Benutzerkonten-, Anwendungs- und Speicherfehler.
  • Setze eine Startbegrenzung nach Behebung der Ursache zurück und prüfe dann Status, Funktion und vorgesehenes Startverhalten.
6

Dateien archivieren und komprimieren

Ein Archiv sammelt Dateien in einem Objekt; Komprimierung verändert, wie viel Speicherplatz dieses Objekt benötigt. Wenn du diese Aufgaben unterscheidest, lassen sich Sicherungsbefehle und Wiederherstellungen leichter nachvollziehen. Du erstellst und untersuchst tar-Archive, entpackst sie in ein ausgewähltes Verzeichnis und vergleichst gzip, bzip2, xz und zip. Die Formatwahl hängt von Geschwindigkeit, Größe, Anforderungen an die Weitergabe und Dateimetadaten ab, während eine geprüfte Wiederherstellung ein stärkerer Beleg ist als ein vertrauter Dateiname.

6.1 tar-Archive erstellen, ihren Inhalt auflisten und sie entpacken

Ein Archiv bündelt Dateien und Verzeichnisse mit ihren Namen und Metadaten. Komprimierung verringert die Anzahl der zum Speichern von Daten benötigten Bytes. Ein einfaches tar-Archiv bündelt Dateien, ohne sie zu komprimieren; mit einem Komprimierungsprogramm entstehen Dateien wie .tar.gz, .tar.bz2 oder .tar.xz.

Die Optionen wie einen kurzen Satz lesen
OptionAufgabe
-c, -t, -xErstellen, auflisten oder entpacken; wähle eine Aktion
-f FILEDie Archivdatei benennen
-vNamen oder Details der Archiveinträge anzeigen
-z, -j, -Jgzip, bzip2 oder xz verwenden
-C DIRFür nachfolgende Einträge oder das Entpacken das Verzeichnis wechseln

GNU tar akzeptiert auch kombinierte Optionen und die ältere Schreibweise ohne Bindestrich. Setze bei einer kombinierten Gruppe f zuletzt und danach den zugehörigen Dateinamen. Das große J wählt xz, das kleine j bzip2.

Ein Archiv mit nützlichen Eintragsnamen erstellen
tar -czvf site-backup.tar.gz -C /var/www site

Dies erstellt site-backup.tar.gz im aktuellen Verzeichnis der Shell. Tar wechselt für die Eingabe nach /var/www und fügt dann site hinzu, sodass gespeicherte Namen mit site/ beginnen. Es bewahrt Verzeichnisstruktur, Modi, Eigentümermetadaten und Zeitstempel.

Die direkte Angabe von /var/www/site funktioniert ebenfalls. GNU tar entfernt normalerweise den führenden Schrägstrich und speichert var/www/site/...; beim Entpacken wird dieser Pfad dann unterhalb des Ziels wiederhergestellt. Die Auswahl des Eingabeverzeichnisses mit -C ergibt eine kürzere, praktischere Struktur für die Wiederherstellung.

Vor der Wiederherstellung auflisten

Führe tar -tzvf site-backup.tar.gz aus. Der Befehl listet Namen und Metadaten auf, ohne zu entpacken. Prüfe, ob alle Einträge unter einem Verzeichnis liegen. Andernfalls kann das Entpacken Dateien über das Zielverzeichnis verstreuen. GNU tar erkennt beim Lesen gängige Komprimierungsformate, sodass auch tar -tvf site-backup.tar.gz funktioniert.

Für die Wiederherstellung in ein vorhandenes leeres Verzeichnis:

tar -xzvf site-backup.tar.gz -C /tmp/restore

Das Zielverzeichnis muss bereits existieren. Beim Entpacken können gleichnamige Dateien überschrieben werden. Verwende daher ein leeres Wiederherstellungsverzeichnis, wenn du ein unbekanntes Archiv prüfst. Um einen Eintrag zu entpacken, nenne ihn genau wie aufgelistet: tar -xzvf site-backup.tar.gz site/index.html.

Archivdateinamen und Metadaten schützen

Das Wort nach -f ist der Archivdateiname. In tar -cfz backup.tar.gz docs behandelt tar z als diesen Dateinamen und die späteren Wörter als Eingaben. Ebenso lässt tar -cf *.txt durch Shell-Expansion die erste Textdatei als Ausgabearchiv auswählen und kann sie überschreiben. Gib den Archivnamen immer ausdrücklich an.

Ein regulärer Benutzer stellt Dateien unter eigener Eigentümerschaft wieder her; root kann aufgezeichnete Eigentümer wiederherstellen. Das Erstellen einer Sicherung erfordert Lesezugriff auf die Quelle. Verwende für geschützte Systemdateien einen autorisierten Befehl wie sudo tar -czf /root/etc-2026-10-22.tar.gz /etc und prüfe seine Fehlermeldungen auf ausgelassene Dateien.

--exclude='*.log' lässt passende Pfade aus. Das -a von GNU tar wählt anhand der Endung ein Komprimierungsprogramm, wie in tar -caf backup.tar.xz docs. Bevor du Originale entfernst, lies das Archiv mit tar -tzf backup.tar.gz > /dev/null und bestätige, dass die Auflistung die erwarteten Dateien enthält. Ein erfolgreiches Lesen prüft die Lesbarkeit; die Untersuchung einer Wiederherstellung prüft zusätzlich, ob die ausgewählten Inhalte nützlich sind.

Wichtige Erkenntnisse

  • Archivieren sammelt Dateien und Metadaten; Komprimieren verringert die Größe.
  • Wähle eine tar-Aktion und gib -f einen ausdrücklichen Archivdateinamen.
  • -C steuert die Struktur der Eingabe oder das Ziel beim Entpacken.
  • Liste den Inhalt vor dem Entpacken auf und stelle ihn in einem leeren Verzeichnis wieder her, um Überschreiben zu vermeiden.
  • Sicherungen benötigen Leserechte und root kann aufgezeichnete Eigentümer wiederherstellen.
  • Prüfe lesbare Inhalte und eine Wiederherstellung, bevor du dich auf das Archiv verlässt.

6.2 Dateien mit gzip, bzip2, xz und zip komprimieren

Komprimierungswerkzeuge unterscheiden sich in Geschwindigkeit, Größe und im Umgang mit Originalen. Wähle ein Format passend zur Aufgabe: eine schnelle Verkleinerung eines Protokolls, eine Linux-Sicherung oder ein Download für Benutzer verschiedener Betriebssysteme.

Eine Datei komprimieren und bei Bedarf das Original behalten
KomprimierungsprogrammEndung der komprimierten DateiBefehl zum Dekomprimieren
gzip.gzgunzip oder gzip -d
bzip2.bz2bunzip2 oder bzip2 -d
xz.xzunxz oder xz -d

Diese Werkzeuge ersetzen eine Eingabedatei normalerweise durch ihre komprimierte Version. gzip access.log hinterlässt access.log.gz und entfernt nach Erfolg das Original. Ergänze -k, um es zu behalten. Ihre Formen mit -d kehren den Vorgang um.

Sie erstellen kein Verzeichnisarchiv aus mehreren Dateien. gzip project lehnt ein Verzeichnis ab; rekursives gzip komprimiert dessen Dateien einzeln. Um einen Verzeichnisbaum als ein komprimiertes Objekt zu erhalten, erstelle ein tar-Archiv mit dem gewählten Komprimierungsprogramm.

Zeit, Arbeitsspeicher und Größe abwägen

Gzip ist gewöhnlich schnell, xz erstellt oft kleinere Dateien bei höherem Zeit- und Speicheraufwand und bzip2 liegt meist dazwischen. Die Ergebnisse hängen von Eingabe und Einstellungen ab. Die Stufen von -1 bis -9 bevorzugen am unteren Ende Geschwindigkeit und am oberen Ende Komprimierung. Voreingestellt sind 6 für gzip und xz und 9 für bzip2.

Textprotokolle schrumpfen oft stark. JPEG-Bilder, MP4-Videos und komprimierte Archive profitieren gewöhnlich kaum von einem weiteren Durchlauf. Ihre erneute Komprimierung kann CPU-Zeit verbrauchen, ohne nennenswert Platz zu sparen.

Bei einer Stichprobe von 240 MiB an Protokollen erzeugte gzip 31 MiB und xz 22 MiB. Diese Ausgaben behalten etwa 12,9 % und 9,2 % der ursprünglichen Größe. Die kleinere Datei erforderte bei dieser Stichprobe eine längere Komprimierungszeit; die Zahlen sind keine Vorhersagen für andere Daten.

Komprimierte Inhalte lesen und prüfen

zcat, zless und zgrep lesen gzip-komprimierten Text; bzcat und xzcat verarbeiten ihre jeweiligen Formate. Zum Beispiel durchsucht zgrep "error" /var/log/syslog.2.gz ein rotiertes Protokoll, ohne eine unkomprimierte Kopie auf dem Datenträger zu hinterlassen.

Verwende gzip -t file.gz oder xz -t file.xz für Integritätsprüfungen. Eine Endung ist nur eine Namenskonvention: file backup.bin kann gzip-Inhalt auch ohne .gz erkennen. sha256sum backup.tar.gz erzeugt eine Prüfsumme für den Vergleich nach einer Übertragung. Übereinstimmende Prüfsummen zeigen, dass die Kopien übereinstimmen, nicht dass jede gewünschte Quelldatei enthalten war.

Ein Verzeichnis mit zip weitergeben

ZIP bündelt und komprimiert und behält dabei die Quelldateien:

zip -r project.zip project
unzip -l project.zip
unzip project.zip -d /tmp/project

-r bezieht den Inhalt des Verzeichnisses rekursiv ein. unzip -l listet ihn auf; -d wählt das Ziel zum Entpacken. Die Befehle müssen möglicherweise erst installiert werden. ZIP ist für Windows- und macOS-Benutzer praktisch. Linux-ZIP-Werkzeuge können Unix-Metadaten speichern, aber das Wiederherstellen von Eigentümern und Modi über andere Systeme hinweg ist weniger portabel als die Verwendung von tar für eine Linux-Sicherung.

Wähle .tar.gz für eine routinemäßige Linux-Sicherung, .tar.xz, wenn die Verkleinerung eines Downloads wichtiger als die Komprimierungszeit ist, .zip für die breite Weitergabe an Desktopbenutzer und gzip für eine einzelne große Textdatei. Behalte die Quelldateien, bis Prüfungen und eine probeweise Wiederherstellung belegen, dass das Archiv enthält, was du benötigst.

Wichtige Erkenntnisse

  • Gzip, bzip2 und xz komprimieren einzelne Dateien und ersetzen normalerweise ihre Eingaben.
  • Verwende -k, um ein Original zu behalten, und tar, um ein Verzeichnis zu bündeln.
  • Komprimierungsgewinn und Ressourcenaufwand hängen von Eingabe und Einstellungen ab.
  • Nutze Programme zum Lesen komprimierter Texte und Integritätsprüfungen, ohne alles zu entpacken.
  • ZIP ist für die Weitergabe praktisch; tar ist für Linux-Sicherungen üblich, die Metadaten erhalten.

Linux-Prozesse, Pakete und Dienste: Beispiele

6 Interaktive Lektionen

1

Eine ausgelastete Aufgabe finden und steuern

17 Schritte
Lies Prozessinformationen, identifiziere die begrenzende Ressource und wähle eine geeignete Steuerungsmaßnahme.
  1. 1
    EinführungMit der laufenden Arbeit beginnen

    Ein Terminal reagiert träge, während ein langer Komprimierungsauftrag läuft. Bevor du etwas stoppst, verbinde das sichtbare Symptom mit einem Prozess und einer Ressource.

    Du gehst von einer Prozessmomentaufnahme zu laufend aktualisierten CPU- und Arbeitsspeicherinformationen über und entscheidest dann, wie du Arbeit pausierst, stoppst oder ihre Priorität senkst. Die PID identifiziert den Prozess; die Jobnummer der Shell erfüllt einen anderen Zweck, wenn du ihn zwischen Vorder- und Hintergrund verschiebst.

  2. 2
    ErklärungEigentümer und Identität ermitteln

    Führe ps -ef für eine systemweite Momentaufnahme mit PID und PPID aus. Ein von deinem Terminal gestarteter Befehl ist normalerweise ein Kindprozess dieser Shell.

    Verwende ps aux für CPU- und Arbeitsspeicherspalten. Ein Programm kann mehrere laufende Instanzen haben, jede mit eigener PID. Prüfe bei der Zielauswahl sowohl Befehl als auch Eigentümer: Ein vertrauter Name allein kann mehrere Prozesse bezeichnen, und eine PID kann nach dem Ende ihres früheren Prozesses erneut vergeben werden.

  3. 3
    BeispielCPU-Zeit richtig lesen

    Eine ps-Zeile zeigt START 09:00, TIME 0:08 und Zustand S. Das Programm begann um 09:00 Uhr und hat acht Sekunden CPU-Arbeit angesammelt. Es wartet auf ein Ereignis.

    Die seit dem Start verstrichene Zeit steht nicht im Feld TIME. Ein Dienst kann stundenlang auf Anfragen warten und sehr wenig CPU-Zeit verbrauchen. Verwende pgrep -a NAME, um relevante Befehlszeilen zu finden, und /proc/PID/status, wenn du die detaillierte Sicht des Kernels benötigst.

  4. 4
    HerausforderungEinen wartenden Server beurteilen

    Ein Server wurde gestern gestartet. Seine ps-Zeile enthält TIME 0:12, TTY ? und Zustand S. Ist das ein Beleg dafür, dass er den größten Teil des Tages nicht gelaufen ist? Erkläre die drei Felder.

    ---reveal---

    Nein. Er hat 12 Sekunden CPU-Arbeit verbraucht, hat kein steuerndes Terminal und wartet gerade. Das Warten auf Anfragen ist normales Dienstverhalten. Diese Felder geben weder an, wie viele Stunden der Server verfügbar war, noch ob eine bestimmte Anfrage erfolgreich war.

  5. 5
    ErklärungDie Ressource beobachten, die sich verändert

    Öffne top. Drücke P für die Sortierung nach CPU-Verbrauch, M für Speicherverbrauch und 1 für einzelne CPUs. Drücke q zum Beenden.

    Lies die Übersicht zusammen mit der Prozessliste. Hohe CPU-Arbeit von Benutzerprogrammen deutet auf Rechenarbeit hin; ein hoher wa-Wert lenkt die Aufmerksamkeit auf ausstehende E/A und ein hoher st-Wert in einer virtuellen Maschine weist auf dem Gastsystem vorenthaltene CPU-Zeit des Hostsystems hin. RES misst residenten Arbeitsspeicher; eine große VIRT-Zuweisung allein ist ein schlechtes Maß für die physische Speichernutzung.

  6. 6
    BeispielSystemlast und CPU-Kapazität gegenüberstellen

    Angenommen, nproc meldet 4 und eine überwiegend CPU-lastige Arbeitslast zeigt die Systemlast 6.00, 5.20, 3.10. Bei geringen E/A-Wartezeiten bedeutet die jüngste Last, dass mehr Prozesse laufbereit sind, als vier CPUs gleichzeitig ausführen können.

    Der 1-Minuten-Wert liegt über den Mittelwerten für längere Zeiträume und zeigt damit einen jüngsten Anstieg. Die Linux-Systemlast zählt auch nicht unterbrechbare Wartezeiten. Wiederhole diesen Vergleich daher mit Blick auf die CPU-Übersicht und Prozesszustände; die Zahl ist kein CPU-Prozentwert.

  7. 7
    KernaussageAvailable vor free lesen

    free -h kann wenig vollständig freien Arbeitsspeicher zeigen, während mehrere GiB verfügbar bleiben. Linux nutzt freien Arbeitsspeicher für Cache und kann einen großen Teil davon für neue Arbeit zurückgewinnen.

    Available schätzt die Kapazität ohne Auslagerung. Achte auf wenig verfügbaren Arbeitsspeicher zusammen mit zunehmender Nutzung des Auslagerungsspeichers als stärkeren Hinweis auf Knappheit. Beendet der Kernel Arbeit, weil der Speicher erschöpft ist, kann ein OOM-Eintrag in sudo journalctl -k das plötzliche Ende erklären.

  8. 8
    HerausforderungDie zu untersuchende Ressource auswählen

    Ein Server hat viele Prozesse im Zustand D, einen hohen wa-Wert, geringen CPU-Verbrauch durch Benutzerprogramme und reichlich verfügbaren Arbeitsspeicher. Welche Ressource solltest du zuerst untersuchen und warum kann seine Systemlast trotzdem hoch sein?

    ---reveal---

    Untersuche zuerst Speicherzugriffe oder andere E/A-Wartezeiten. Linux zählt nicht unterbrechbare Prozesse zur Systemlast, sodass eine hohe Last mit untätigen CPUs einhergehen kann. Die Speicherwerte deuten nicht auf einen unmittelbaren Arbeitsspeichermangel hin, und eine hohe Last allein kann Rechenarbeit auf der CPU nicht als Ursache bestimmen.

  9. 9
    ErklärungZuerst um ein sauberes Ende bitten

    Ein Signal fordert einen Prozess zu einer Handlung auf. kill PID sendet SIGTERM, das dem Programm Gelegenheit gibt, seinen Zustand zu speichern und Ressourcen zu schließen. SIGKILL erzwingt das Ende ohne dessen Aufräumcode.

    Prüfe das Ziel, sende TERM, gib ihm Zeit und prüfe erneut, bevor du weitere Schritte ergreifst. Eine PID, die jetzt zu einem neuen Befehl gehört, bezeichnet einen anderen Prozess. Fordere bei einem von systemd überwachten Dienst über seine Verwaltung sudo systemctl stop NAME an.

  10. 10
    BeispielBewusst pausieren und fortsetzen

    kill -STOP 5120 pausiert Prozess 5120; kill -CONT 5120 setzt ihn fort. Der Prozess behält während der Pause seinen Arbeitsspeicher und seine geöffneten Dateien.

    Strg+Z sendet eine Aufforderung zum Pausieren an die Vordergrundarbeit im Terminal, während Strg+C eine Unterbrechung sendet, die sie normalerweise beendet. Ein Zombieprozess ist bereits beendet und kann nicht erneut beendet werden. Ein nicht unterbrechbar auf einen Speicherzugriff wartender Prozess kann sichtbar bleiben, bis das Warten endet, selbst nach einem erzwungenen Beendigungssignal.

  11. 11
    HerausforderungEinen verwalteten Dienst gestoppt halten

    Ein verwalteter Arbeitsprozess startet neu, nachdem du ihn anhand seiner PID beendet hast. Du möchtest ihn jetzt für Wartungsarbeiten stoppen. Welche Maßnahme passt und warum ist es keine gute Vorgehensweise, den Prozess mit der neuen PID zu beenden?

    ---reveal---

    Verwende sudo systemctl stop NAME. Die Dienstverwaltung erkennt, dass dieser Stopp beabsichtigt ist, und behandelt die verwalteten Prozesse. Das Beenden eines weiteren Prozesses anhand seiner PID kann dieselbe Fehlerbehebungsschleife wiederholen, weil systemd das Prozessende als Grund für einen Neustart des Arbeitsprozesses behandeln kann.

  12. 12
    BeispielEinen Job verschieben, ohne ihn zu verlieren

    Starte sleep 300 im Vordergrund und drücke dann Strg+Z. Bash meldet den Job als Stopped. bg %1 setzt Job 1 fort und gibt dabei die Eingabeaufforderung zurück; fg %1 holt ihn wieder in den Vordergrund.

    %1 ist eine lokale Jobauswahl der Shell, nicht PID 1. Ein angehaltener Job ist nicht beendet: Er behält Ressourcen. Stört die Ausgabe von Hintergrundarbeit das Terminal, leite sie in eine Datei, bevor du die Aufgabe weiterlaufen lässt.

  13. 13
    TippEine Aufgabe auf die Abmeldung vorbereiten

    Verwende für eine neue lange Aufgabe nohup ./long-task.sh > task.log 2>&1 &. Nohup sorgt dafür, dass sie HUP ignoriert, die Umleitung schreibt beide Ausgabeströme in eine Datei und das kaufmännische Und versetzt sie in den Hintergrund.

    Jeder Teil hat eine eigene Aufgabe. Ein kaufmännisches Und allein schützt nicht vor dem Schließen des Terminals. disown %1 von Bash kann einen vorhandenen Job aus der Jobtabelle der Shell entfernen, seine Ein- und Ausgaben benötigen aber weiterhin geeignete Ziele.

  14. 14
    ErklärungPriorität senken, ohne die Geschwindigkeit zu begrenzen

    Starte aufwendige Arbeit mit nice -n 10 COMMAND ausgehend vom üblichen Nice-Wert 0 oder ändere eine laufende Aufgabe mit renice -n 15 -p PID. Höhere Nice-Werte senken die CPU-Scheduling-Priorität gewöhnlicher Prozesse.

    Der Bereich reicht von -20 bis 19. Ein gewöhnlicher Benutzer kann seine eigene Arbeit grundsätzlich weniger konkurrenzstark machen; das Erhöhen ihrer Priorität benötigt meist root. Eine Aufgabe mit Nice-Wert 19 nutzt eine untätige CPU weiterhin vollständig, und der Nice-Wert legt nicht die Priorität von Datenträgerzugriffen fest.

  15. 15
    HerausforderungEinen laufenden Hintergrundjob anpassen

    Deine eigene Komprimierungsaufgabe im Hintergrund hat die PID 9328 und den Nice-Wert 0. Du möchtest konkurrierender interaktiver Arbeit mehr CPU-Zeit ermöglichen, ohne die Aufgabe zu pausieren. Welcher Befehl und welche Wirkung passen?

    ---reveal---

    renice -n 15 -p 9328 senkt ihre CPU-Priorität, indem es ihren Nice-Wert erhöht. Die Aufgabe läuft weiter; bei Konkurrenz um die CPU erhält sie weniger Gelegenheit zur Ausführung. STOP würde sie vollständig pausieren, während ein negativer Nice-Wert ihre Priorität erhöhen würde.

  16. 16
    HerausforderungAus den Beobachtungen eine Reaktion ableiten

    Eine Sicherung läuft mit Nice-Wert 0. Top zeigt, dass sie mehrere CPUs nutzt, die E/A-Wartezeit gering und genug Arbeitsspeicher verfügbar ist; interaktive Arbeit ist langsam. Musst du die Sicherung beenden, um der interaktiven Aufgabe zu helfen?

    ---reveal---

    Nein. Die Beobachtungen sprechen für Konkurrenz um CPU-Zeit. Ein höherer Nice-Wert für die Sicherung kann der interaktiven Arbeit mehr Gelegenheit zur Ausführung geben, während die Sicherung weiterläuft. Wird ein Stopp später nötig, identifiziere den Prozess erneut und fordere ein sauberes Ende an, bevor du eine erzwungene Beendigung erwägst.

  17. 17
    ZusammenfassungDie Maßnahme an den Beobachtungen ausrichten

    Verwende ps und pgrep, um die Identität festzustellen, und dann top, free und die Systemlast, um die Belastung zu verstehen. Lies den Zustand, bevor du einen Prozess beurteilst, der festzuhängen scheint.

    Ein sauberes Ende, eine Pause, das Verschieben in den Hintergrund und eine Prioritätsänderung lösen verschiedene Probleme. Überlasse die Dienststeuerung systemd, unterscheide lokale Jobs von PIDs und prüfe das Ergebnis, nachdem du laufende Arbeit verändert hast.

2

Einen nützlichen Hardwarebericht erstellen

10 Schritte
Identifiziere Architektur und Kapazität und verbinde dann erkannte Geräte mit Treibern und Kernelmeldungen.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungFakten zur Anforderung sammeln
  2. 2
    ErklärungDie Systemebenen benennen
  3. 3
    BeispielDie CPU-Anordnung zählen
  4. 4
    ErklärungInstallierten und nutzbaren Arbeitsspeicher vergleichen
  5. 5
    HerausforderungEine Mindestanforderung prüfen
  6. 6
    BeispielEinen Speicherbaum lesen
  7. 7
    ErklärungEin Gerät mit seinem Treiber verbinden
  8. 8
    HerausforderungEinen neu angeschlossenen Datenträger identifizieren
  9. 9
    HerausforderungKapazität von Treiberunterstützung unterscheiden
  10. 10
    ZusammenfassungDen Bericht konkret gestalten
3

Software installieren und Änderungen zurückverfolgen

14 Schritte
Nutze Paketquellen, wähle Wartungsvorgänge und verfolge installierte Dateien zu ihren Paketen zurück.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDateien und Paketeinträge verbunden halten
  2. 2
    ErklärungDas Werkzeug für Paketquellen auswählen
  3. 3
    KernaussageEine Abhängigkeit gehört in den Plan
  4. 4
    HerausforderungDie zusätzlichen Pakete erklären
  5. 5
    BeispielVor der Installation aktualisieren
  6. 6
    ErklärungLesen, was eine Aktualisierung erlaubt
  7. 7
    TippEntscheiden, was beim Entfernen erhalten bleibt
  8. 8
    HerausforderungAktualisieren von Informationen und Einspielen trennen
  9. 9
    BeispielEinen Befehl zu seinem Paket zurückverfolgen
  10. 10
    ErklärungÜber installierte Dateien hinaus suchen
  11. 11
    HerausforderungDie Richtung der Abfrage wählen
  12. 12
    VerbindungEinen Fehler mit kürzlicher Wartung in Verbindung bringen
  13. 13
    HerausforderungAnhand der Hinweise reparieren
  14. 14
    ZusammenfassungDen tatsächlich benötigten Zustand prüfen
4

Einen Dienst jetzt und nach einem Neustart ausführen

14 Schritte
Lies den Dienstzustand, wähle Steuerbefehle und wende eine lokale Unit-Überschreibung an.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungZwei Fragen zum Zustand stellen
  2. 2
    BeispielLoaded und Active lesen
  3. 3
    KernaussageEine aktive Unit braucht keinen laufenden Prozess
  4. 4
    HerausforderungDeaktiviert, aber laufend deuten
  5. 5
    ErklärungJetzt, später oder beides wählen
  6. 6
    BeispielEine Anwendungskonfiguration anwenden
  7. 7
    HerausforderungEinen Dienst blockieren und seinen Prozess berücksichtigen
  8. 8
    ErklärungDie wirksame Unit-Definition lesen
  9. 9
    BeispielEinen einfachen Vordergrundserver beschreiben
  10. 10
    BeispielEine Überschreibung bei Aktualisierungen erhalten
  11. 11
    HerausforderungEinen direkt bearbeiteten Befehl anwenden
  12. 12
    KernaussageNeustartregeln beachten einen angeforderten Stopp
  13. 13
    HerausforderungEinen Dienst nach einer Unit-Änderung prüfen
  14. 14
    ZusammenfassungDie Ebenen auseinanderhalten
5

Die Ursache eines fehlgeschlagenen Dienstes finden

13 Schritte
Filtere Protokolle, deute einen ursächlichen Fehler und überprüfe jeweils eine Reparatur.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungMit einem beobachtbaren Symptom beginnen
  2. 2
    ErklärungDienst und Versuch auswählen
  3. 3
    BeispielNützliche Meldungen niedriger Priorität behalten
  4. 4
    HerausforderungDen richtigen Systemstart durchsuchen
  5. 5
    ErklärungAnwendungsprotokolle und rotierte Protokolle finden
  6. 6
    BeispielEin stilles Anwendungsende untersuchen
  7. 7
    HerausforderungEine ältere Textquelle auswählen
  8. 8
    BeispielMit dem ersten ursächlichen Fehler beginnen
  9. 9
    BeispielEinen belegten Port zum belegenden Dienst zurückverfolgen
  10. 10
    KernaussageMit Ergebniscode die nächste Prüfung wählen
  11. 11
    HerausforderungEinen Fehler nach einer Startbegrenzung beheben
  12. 12
    HerausforderungPrüfen, ohne Belege zu verlieren
  13. 13
    ZusammenfassungJeden Befund den nächsten Schritt eingrenzen lassen
6

Ein wiederherstellbares Archiv erstellen

11 Schritte
Wähle gespeicherte Pfade, prüfe Archivinhalt und vergleiche Formate für Komprimierung und Weitergabe.

Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.

  1. 1
    EinführungDie Wiederherstellung vor dem Archiv planen
  2. 2
    ErklärungZusammenfassen und Verkleinern unterscheiden
  3. 3
    BeispielNützliche relative Pfade erstellen
  4. 4
    BeispielUntersuchen und Entpacken trennen
  5. 5
    HerausforderungDie Struktur nach dem Entpacken vorhersagen
  6. 6
    Tippf neben seinem Dateinamen halten
  7. 7
    ErklärungWissen, welche Originale erhalten bleiben
  8. 8
    BeispielEin Format für die Aufgabe wählen
  9. 9
    HerausforderungEin Protokoll beim Komprimieren behalten
  10. 10
    HerausforderungKopie und Inhalt prüfen
  11. 11
    ZusammenfassungPassendes Format und passende Prüfungen nutzen

Linux-Prozesse, Pakete und Dienste: Übungsaufgaben

50 Übungsfragen in 5 Sets

Set 1: Prozesse, Pakete und Dienstzustände ablesen10 Übungsfragen

Frage 1 von 10

Ein Prozess hat START 06:20 und TIME 0:04. Was gibt TIME an?
  1. Vier Sekunden seit dem Start
  2. Vier Sekunden CPU-Arbeit
  3. Vier Minuten seit dem Start
  4. Vier Minuten Warten auf Eingabe
Antwort zeigenAntwort ausblenden
Antwort: B
TIME summiert die Zeit, die der Prozess eine CPU genutzt hat. Das Feld START zeigt, wann er begann. Ein Prozess kann also seit dem Morgen laufen und dabei nur vier Sekunden CPU-Arbeit verrichtet haben. Wer TIME als verstrichene Zeit liest, verwechselt die geleistete Arbeit mit der gesamten Existenzdauer des Prozesses.

Frage 2 von 10

Ein Server zeigt 0,2 GiB freien und 6,1 GiB verfügbaren Arbeitsspeicher sowie keine zunehmende Nutzung des Auslagerungsspeichers. Was deutet das über die Speicherbelastung an?
  1. Der Arbeitsspeicher ist wegen des niedrigen free-Werts erschöpft.
  2. Vor neuer Arbeit muss Auslagerungsspeicher ergänzt werden.
  3. Der Cache ist dauerhaft nicht verfügbar.
  4. Es besteht erheblicher Spielraum im Arbeitsspeicher.
Antwort zeigenAntwort ausblenden
Antwort: D
Der verfügbare Arbeitsspeicher schätzt, was neue Programme ohne Auslagerung nutzen können, einschließlich zurückgewinnbarem Cache. Der Wert von 6,1 GiB zeigt daher trotz wenig vollständig ungenutztem Arbeitsspeicher Spielraum an. Wer die Spalte free als gesamte verbleibende Kapazität betrachtet, übersieht, dass Linux freien Speicher für Caches nutzt.

Frage 3 von 10

Du hast überprüft, dass PID 6842 dein nicht reagierender Editor ist. Welches Signal solltest du normalerweise zuerst senden, um ihn zum Beenden aufzufordern?
  1. SIGTERM
  2. SIGKILL
  3. SIGSTOP
  4. SIGCONT
Antwort zeigenAntwort ausblenden
Antwort: A
SIGTERM fordert zur Beendigung auf und ermöglicht dem Editor dabei, seinen Zustand zu speichern und aufzuräumen. SIGKILL verhindert dieses Aufräumen und ist die Ausweichlösung, wenn ein überprüfter Prozess nicht auf eine normale Aufforderung reagiert. SIGSTOP pausiert die Arbeit, während SIGCONT sie fortsetzt; keines ist eine normale Aufforderung zum Beenden.

Frage 4 von 10

Du benötigst die Version des Kernels, der gerade auf einem Server läuft. Welcher Befehl liefert sie?
  1. cat /etc/os-release
  2. uname -m
  3. uname -r
  4. nproc
Antwort zeigenAntwort ausblenden
Antwort: C
Das Versionsfeld von uname bezeichnet den aktuell laufenden Kernel. Die Datei os-release bezeichnet dagegen die Linux-Distribution, die eine eigene Versionsnummerierung hat. Die Installation eines neuen Kernelpakets ändert das Ergebnis von uname erst, wenn der Rechner tatsächlich in diesen Kernel startet.

Frage 5 von 10

Die Installation einer Anwendung benötigt zusätzlich zwei Bibliothekspakete aus konfigurierten Paketquellen. Warum ist apt für diese Aufgabe praktischer als dpkg?
  1. Es macht jede Paketarchitektur lauffähig.
  2. Es macht Vertrauen in Herausgeber überflüssig.
  3. Es löst Abhängigkeiten auf und lädt sie herunter.
  4. Es installiert ohne Änderung von Systemdateien.
Antwort zeigenAntwort ausblenden
Antwort: C
APT nutzt Informationen aus Paketquellen, um Pakete zu finden und herunterzuladen, die Abhängigkeitsanforderungen erfüllen, und überträgt dann die Installation an dpkg. Dpkg kann eine lokale Datei installieren und verzeichnen, lädt aber die fehlenden Bibliotheken nicht herunter. Der Zugriff auf Paketquellen beseitigt weder die Anforderungen an Architekturkompatibilität noch die an das Vertrauen in Herausgeber.

Frage 6 von 10

Ein Administrator führt nur sudo apt update aus. Was hat sich nach erfolgreicher Ausführung geändert?
  1. Alle installierten Anwendungsversionen
  2. Die lokalen Paketlisten der Paketquellen
  3. Der aktuell im Speicher laufende Kernel
  4. Die Systemkonfiguration jedes Pakets
Antwort zeigenAntwort ausblenden
Antwort: B
APT update aktualisiert lokale Informationen über Versionen, die aus konfigurierten Paketquellen verfügbar sind. Es installiert diese Versionen nicht; ein Aktualisierungs- oder Installationsvorgang nimmt diese Änderung vor. Ein neuerer Kernel benötigt außerdem einen Neustart, bevor er zum laufenden Kernel wird, sodass das Aktualisieren der Listen ihn nicht ändern kann.

Frage 7 von 10

Ein Dienst meldet enabled und inactive (dead). Wie ist diese Kombination zu verstehen?
  1. Für automatischen Start eingerichtet, jetzt gestoppt
  2. Jetzt laufend, vom automatischen Start ausgeschlossen
  3. Jetzt fehlgeschlagen, gegen jeden künftigen Start gesperrt
  4. Jetzt laufend, auf seine Startlinks wartend
Antwort zeigenAntwort ausblenden
Antwort: A
Enabled beschreibt Aktivierungslinks, die gewöhnlich zum Start eines Dienstes beim Systemstart dienen, während inactive seinen gegenwärtigen Zustand beschreibt. Das sind getrennte Eigenschaften, daher ist die Kombination möglich. Wer enabled als aktuell laufend versteht, übersieht möglicherweise einen Dienst, der bewusst gestoppt wurde oder nie erfolgreich gestartet ist.

Frage 8 von 10

Ein gestoppter Dienst soll jetzt starten und für künftige Systemstarts aktiviert werden. Welcher Befehl verbindet diese Aktionen?
  1. sudo systemctl enable nginx
  2. sudo systemctl start nginx
  3. sudo systemctl unmask nginx
  4. sudo systemctl enable --now nginx
Antwort zeigenAntwort ausblenden
Antwort: D
Enable mit --now erstellt Aktivierungslinks und startet den Dienst. Enable allein lässt den aktuellen Laufzustand unverändert, während start allein die Aktivierung unverändert lässt. Unmask entfernt nur eine Startsperre und erfüllt daher für sich genommen keinen der beiden Teile der gewünschten Änderung.

Frage 9 von 10

Du möchtest nginx-Einträge des aktuellen Systemstarts einschließlich Meldungen auf Informationsstufe sehen. Welcher Befehl wählt diesen Bereich aus?
  1. sudo journalctl -u nginx -b -1
  2. sudo journalctl -u nginx -b
  3. sudo journalctl -u nginx -b -p err
  4. sudo journalctl -k -b
Antwort zeigenAntwort ausblenden
Antwort: B
Der Unit-Filter wählt nginx und -b den aktuellen Systemstart aus, ohne die Meldungspriorität einzuschränken. Ein zusätzliches -p err würde Meldungen auf Informationsstufe ausblenden, die nützliche Ereignisdetails enthalten können. Der Filter für den vorherigen Systemstart ändert den zeitlichen Bereich, und -k wählt Kernelmeldungen statt des vollständigen Dienstjournals aus.

Frage 10 von 10

Du archivierst die root gehörende Datei /srv/notes/day.txt mit tar -czf notes.tar.gz -C /srv notes. Als regulärer Benutzer führst du danach tar -xzf notes.tar.gz -C /tmp/inspect in diesem leeren vorhandenen Verzeichnis aus. Welchen Pfad und Eigentümer hat die wiederhergestellte Datei normalerweise?
  1. /tmp/inspect/srv/notes/day.txt, Eigentümer ist der entpackende Benutzer
  2. /tmp/inspect/notes/day.txt, Eigentümer ist root
  3. /srv/notes/day.txt, Eigentümer ist der entpackende Benutzer
  4. /tmp/inspect/notes/day.txt, Eigentümer ist der entpackende Benutzer
Antwort zeigenAntwort ausblenden
Antwort: D
Der Erstellungsbefehl speichert den relativen Eintrag notes/day.txt, und beim Entpacken wird er unter /tmp/inspect. angelegt. Ein regulärer Benutzer erstellt wiederhergestellte Dateien normalerweise unter eigener Eigentümerschaft. Wer root als Eigentümer erwartet, verwechselt aufgezeichnete Metadaten mit den Rechten, die zur Wiederherstellung dieses Eigentümers nötig sind; wer ein srv-Präfix erwartet, übersieht den Verzeichniswechsel beim Erstellen.
Set 2: Alltägliche Linux-Wartungsbefehle anwenden10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Bash zeigt nach dem Start eines Jobs [3] 9026. Wie holst du diesen Job in den Vordergrund?
  1. fg %9026
  2. bg %3
  3. fg %3
  4. kill -CONT 3
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein Server mit acht CPUs hat überwiegend CPU-lastige Arbeit, wenig E/A-Wartezeit und die mittleren Systemlasten 12.0, 8.0, 4.0. Was ist die beste Deutung?
  1. Der jüngste CPU-Bedarf übersteigt die Kapazität und ist gestiegen.
  2. Der jüngste CPU-Bedarf ist gering und ist gesunken.
  3. Zwölf Prozent der CPU-Kapazität werden genutzt.
  4. Jede Aufgabe wartet blockiert auf Speicherzugriffe.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein PCI-Netzwerkadapter erscheint in lspci, hat aber keine Zeile Kernel driver in use. Was solltest du als Nächstes untersuchen?
  1. Die Vordergrundjobnummer der Shell
  2. Nur den beworbenen Verkaufsnamen des Geräts
  3. Nur den Paketverlauf des aktuellen Benutzers
  4. Treiberbindung und Kernelfehlermeldungen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Wie findest du auf einem Debian-System das installierte Paket, zu dem /usr/bin/less gehört?
  1. dpkg -L /usr/bin/less
  2. dpkg -S /usr/bin/less
  3. apt search /usr/bin/less
  4. apt policy /usr/bin/less
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Du möchtest ein Debian-Paket entfernen, aber seine verwaltete Systemkonfiguration für eine spätere Neuinstallation behalten. Welcher Vorgang passt?
  1. sudo apt remove NAME
  2. sudo apt purge NAME
  3. sudo apt autoremove
  4. sudo apt update
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Du bearbeitest die ExecStart-Zeile einer Unit direkt auf dem Datenträger. Welche Reihenfolge wendet den neuen Befehl auf einen laufenden Dienst an?
  1. Anwendung neu laden, dann aktivieren
  2. Daemon-reload, dann Dienst neu starten
  3. Dienst aktivieren, dann Dateien abfragen
  4. Status abfragen, dann nur reset-failed
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein Ereignis von vor zwei Tagen fehlt im aktuellen Textprotokoll. Das Verzeichnis enthält auch app.log.2.gz. Wie kannst du diese ältere Datei direkt durchsuchen?
  1. journalctl -u app.log.2.gz
  2. tail -f app.log
  3. gzip app.log.2.gz
  4. zgrep "timeout" app.log.2.gz
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein eigener Dienst meldet 203/EXEC. Sein Journal enthält keine Startmeldung der Anwendung. Die Unit-Datei nennt /opt/worker/run, aber dieser Pfad existiert nicht. Welche Reparaturfolge passt zu den Hinweisen?
  1. Dienstbenutzer anlegen, dann Journal leeren und neu starten
  2. RestartSec erhöhen, dann auf den nächsten automatischen Versuch warten
  3. ExecStart korrigieren, Definitionen neu laden, dann starten und prüfen
  4. Dienst aktivieren, dann den Rechner ohne Änderung des Befehls neu starten
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Du musst report.log mit gzip komprimieren und die unkomprimierte Datei behalten. Welcher Befehl passt?
  1. gzip -k report.log
  2. gzip report.log
  3. gunzip report.log
  4. tar -cf report.log.gz report.log
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Auf Debian hat dpkg ein vertrauenswürdiges lokales Paket unvollständig installiert, weil zwei Abhängigkeiten fehlten. Eine andere automatische Aktualisierung hält gerade die Paketverwaltungssperre. Welche Reihenfolge ist als Nächstes am besten?
  1. Sperrdatei löschen, dann die grundlegende Installation wiederholen
  2. Hauptpaket vollständig entfernen, dann Signaturprüfungen abschalten
  3. Auf den Inhaber der Sperre warten, dann eine apt-Reparaturtransaktion prüfen
  4. Paketlisten aktualisieren, dann die fehlenden Bibliotheken als installiert ansehen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 3: Hinweise mit der richtigen Maßnahme verbinden10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Prozess ist mit Z markiert und sein Elternprozess läuft weiter. Warum entfernt das Senden von SIGKILL an diese PID den Eintrag nicht?
  1. Der Prozess ist pausiert und benötigt vor dem Ende SIGCONT.
  2. Der Prozess rechnet mit einem negativen Nice-Wert.
  3. Der Prozess wartet blockiert auf einen Speicherzugriff.
  4. Der Prozess ist beendet und wartet auf die Abholung durch den Elternprozess.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Deine alte Notiz nennt für einen data-export-Job die PID 7440, aber ps zeigt für diese PID jetzt einen Editor. pgrep findet zwei data-export-Prozesse: PID 8550 ist dein data-export --daily; PID 8551 ist der data-export --weekly eines anderen Benutzers. Nur dein täglicher Job soll sauber enden. Welche Maßnahme passt?
  1. SIGTERM an die gespeicherte PID 7440 senden
  2. PID 8550 prüfen, dann SIGKILL an sie senden
  3. PID 8550 prüfen, dann SIGTERM an sie senden
  4. pkill data-export mit root-Rechten verwenden
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Eine einheitliche CPU-Anordnung hat 2 Sockel, 3 Kerne pro Sockel und 2 Threads pro Kern. Wie viele physische Kerne und logische CPUs bietet sie?
  1. 6 Kerne und 12 logische CPUs
  2. 12 Kerne und 12 logische CPUs
  3. 3 Kerne und 6 logische CPUs
  4. 6 Kerne und 6 logische CPUs
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

APT lehnt Metadaten einer neu hinzugefügten Paketquelle ab, weil der erwartete Signaturschlüssel fehlt. Welche Reaktion erhält die vorgesehene Vertrauensprüfung?
  1. Unsignierte Metadaten einmal akzeptieren, weil das Paket bekannt ist
  2. Herausgeber prüfen und seinen echten Schlüssel korrekt installieren
  3. Dasselbe Paket stattdessen von einem ungeprüften Spiegelserver laden
  4. dpkg verwenden, damit der fehlende Quellenschlüssel die Installation nicht blockiert
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Die installierte Version eines Pakets ist 3.2 und sein APT-Installationskandidat ist 3.4. Was bedeutet das?
  1. Version 3.2 ist installiert; 3.4 ist für die Aktualisierung ausgewählt.
  2. Version 3.4 ist installiert; 3.2 wird vor dem Neustart verwendet.
  3. Beide Versionen sind installiert, weil policy zwei Werte auflistet.
  4. Version 3.2 ist nur aus einer deaktivierten Paketquelle verfügbar.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein Dienst zeigt active (exited), nachdem er eine einmalige Einrichtungsaufgabe erfolgreich abgeschlossen hat. Was bedeutet dieser Zustand?
  1. Sein Hauptprogramm muss noch CPU-Zeit verbrauchen.
  2. Die Einrichtungsaufgabe ist nachweislich fehlgeschlagen.
  3. Seine Unit ist gegen alle künftigen Starts gesperrt.
  4. Die abgeschlossene Aufgabe gilt weiterhin als aktiv.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Eine Paketaktualisierung hat deine Änderung an der Herstellerdatei gelöscht. Du musst deren einzelnen ExecStart-Befehl dauerhaft ersetzen und den neuen Befehl jetzt anwenden. Welche Reihenfolge passt?
  1. Neue Herstellerdatei bearbeiten, weiteren ExecStart anhängen, dann aktivieren
  2. Lokales Drop-in erstellen, ExecStart zurücksetzen und ersetzen, dann neu starten
  3. Lokales Drop-in erstellen, weiteren ExecStart anhängen, dann aktivieren
  4. Lokales Drop-in erstellen, ExecStart zurücksetzen, dann nur die Anwendung neu laden
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Welche Prioritätsstufen umfasst journalctl -p err?
  1. Nur Fehler, allein Stufe 3
  2. Fehler bis Fehlersuche, Stufen 3–7
  3. Notfall bis Fehler, Stufen 0–3
  4. Warnung und Information, Stufen 4–6
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Das Protokoll eines Dienstes meldet zuerst einen Syntaxfehler in der Konfiguration, dann wiederholte Fehlschläge und eine Begrenzung der Starthäufigkeit. Du korrigierst die Datei und ihre Syntaxprüfung ist erfolgreich. Was sollte folgen?
  1. CPU-Priorität erhöhen, neu starten, dann alte Protokolleinträge löschen
  2. Fehlerzustand zurücksetzen, dann den laufenden Dienst als repariert ansehen
  3. Unit aktivieren, dann ohne Anforderung eines neuen Starts warten
  4. Fehlerzustand zurücksetzen, Dienst starten, dann Status und Funktion prüfen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein Team benötigt ein einzelnes komprimiertes Verzeichnisarchiv, das Desktopbenutzer unter Windows und macOS leicht öffnen können. Welcher Befehl ist geeignet?
  1. gzip -r handoff
  2. zip -r handoff.zip handoff
  3. zip handoff.zip handoff
  4. xz handoff
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 4: Wartungsprobleme mit verschiedenen Werkzeugen diagnostizieren10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Ein Komprimierungsauftrag kann sicher von Anfang an neu gestartet werden. Er wurde mit Nice-Wert 0 aus einem Terminal gestartet, konkurriert mit interaktiver Arbeit und muss nach der Abmeldung weiterlaufen. Welcher Plan für einen neuen Start erfüllt diese Anforderungen?
  1. Mit & in den Hintergrund versetzen, dann das Terminal ohne weitere Änderungen schließen
  2. Mit nohup, Ausgabeumleitung und positiver Nice-Anpassung neu starten
  3. nohup mit Nice-Wert -10 nutzen, damit die interaktive Aufgabe mehr CPU-Zeit erhält
  4. Ausgabe umleiten und den Prozess bis morgen mit SIGSTOP anhalten
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Ein Server mit 12 CPUs hat die Systemlast 18, geringen CPU-Verbrauch durch Benutzerprogramme und viele Prozesse im Zustand D. Viel Arbeitsspeicher ist verfügbar und die Nutzung des Auslagerungsspeichers ist stabil. Welcher Hinweis sollte die nächste Untersuchung leiten?
  1. Wartezeiten auf Speicherzugriffe können die Last trotz untätiger CPUs erklären.
  2. Der CPU-Bedarf allein beweist, dass mehr Kerne benötigt werden.
  3. Der geringe CPU-Verbrauch der Benutzerprogramme beweist einen Anzeigefehler.
  4. Speichermangel erklärt jeden Prozess im Zustand D auf dem Hostsystem.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Ein USB-Datenträger war gestern /dev/sdb. Heute wurde zuerst ein anderes Gerät angeschlossen, und ein Schreibzugriff auf den falschen Datenträger würde benötigte Dateien löschen. Was sollte jetzt dein Ziel bestimmen?
  1. Der gestrige Gerätebuchstabe, weil USB-Namen dauerhaft sind
  2. Der erste Wechselmedieneintrag unabhängig von seiner aktuellen Kapazität
  3. Aktuelle Größe, Modell und UUID, mit dem vorgesehenen Datenträger abgeglichen
  4. Das Gerät mit dem niedrigsten Buchstaben nach einem Systemneustart
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

APT hält eine Anwendungsaktualisierung zurück, weil dafür ein installiertes Paket entfernt werden muss. Ein neues Kernelpaket ist bereits installiert, aber uname meldet noch den alten Kernel. Beide Änderungen sollen laufen. Welcher Plan passt?
  1. APT-Listen aktualisieren, Installation auslassen, neu starten und nur uname prüfen
  2. apt upgrade mit -y ausführen, Anwendung neu starten und Rechnerneustart auslassen
  3. Paketverwaltungssperre entfernen, erneut mit dpkg installieren und nur Dateien prüfen
  4. full-upgrade prüfen und anwenden, Rechner neu starten und beide Versionen prüfen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Auf einem RPM-System fehlt /usr/bin/scan. Du möchtest herausfinden, welches Paket aus einer Paketquelle genau diesen Pfad bereitstellt. Welche Abfrage passt?
  1. rpm -qf /usr/bin/scan
  2. rpm -ql /usr/bin/scan
  3. dnf provides /usr/bin/scan
  4. dnf history info /usr/bin/scan
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein laufender Dienst ist deaktiviert, wird aber nach dem Stoppen wiederholt durch seinen Socket aktiviert. Die Richtlinie verlangt, künftige Starts des Dienstes zu blockieren und ihn jetzt zu stoppen. Welche Maßnahme passt?
  1. Den Dienst maskieren und stoppen
  2. Den Dienst ohne --now aktivieren
  3. Den Dienst ein zweites Mal deaktivieren
  4. Die Maskierung aufheben und den Dienst neu laden
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Was legt After=network.target in einer Unit-Datei für sich genommen fest?
  1. Eine Anforderung, dieses Target zu starten
  2. Eine Reihenfolgebeziehung zu diesem Target
  3. Eine Garantie für eine Internetverbindung
  4. Einen Aktivierungslink für künftige Systemstarts
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Ein Programm verschwand während des vorherigen Systemstarts. Sein eigenes Protokoll endet ohne Fehler und das persistente Journal bewahrt diesen Systemstart auf. Wo solltest du nach einer Beendigung durch den OOM-Killer des Kernels suchen?
  1. sudo journalctl -k -b -1
  2. sudo dmesg -w
  3. sudo journalctl -k -b
  4. sudo tail -f /var/log/apt/history.log
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Nginx kann Port 8080 nicht binden. Eine Abfrage lauschender Programme identifiziert einen zweiten Dienst, den das System behalten muss. Beide Dienste müssen laufen. Welche Reparaturrichtung folgt daraus?
  1. Den zweiten Dienst dauerhaft deaktivieren und nur nginx prüfen
  2. Die PID des zweiten Dienstes bei jedem systemd-Neustart beenden
  3. Eine Konfiguration zum Lauschen ändern und testen sowie beide Dienste prüfen
  4. Das Journal leeren und nginx mit derselben Konfiguration erneut versuchen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Ein tar-Archiv listet bundle/a.txt und bundle/b.txt auf. Du möchtest nur b.txt wiederherstellen. Welchen Eintragsnamen solltest du anfordern?
  1. b.txt
  2. /bundle/b.txt
  3. archive.tar.gz/b.txt
  4. bundle/b.txt
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Set 5: Vollständige Linux-Reparaturen planen und prüfen10 Übungsfragen

Speichere diese Einheit, um jede Antwort zu sehen und jedes Set zu üben.

Frage 1 von 10

Für eine Speicheruntersuchung werden die fünf größten Prozesse mit ihren Elternprozessen benötigt. Welcher Befehl liefert eine Kopfzeile und fünf Datenzeilen?
  1. ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 6
  2. ps -eo pid,ppid,%mem,cmd --sort=%mem | head -n 6
  3. ps -eo pid,ppid,%mem,cmd --sort=-%mem | head -n 5
  4. ps -eo pid,ppid,%mem,cmd --sort=%mem | head -n 5
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 2 von 10

Du findest einen nicht verwalteten Kopierauftrag im Zustand D, der auf nicht verfügbaren Speicher wartet, einen Zombie-Kindprozess deiner Anwendung und einen systemd-Arbeitsprozess, der nach einem kill neu startet. Welcher Plan behandelt alle drei Zustände?
  1. KILL beim Speicherwarten wiederholen; Zombie mit KILL beenden; Arbeitsprozess weiter beenden
  2. Speicherwarten mit CONT fortsetzen; Zombie mit KILL abholen; Arbeitsprozess nur deaktivieren
  3. Speicher untersuchen; Elternprozess des Zombies prüfen; Arbeitsprozess über systemd stoppen
  4. Alle Prioritäten erhöhen; Zombie neu starten; Arbeitsprozess maskieren, ohne ihn zu stoppen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 3 von 10

Zwei deiner CPU-lastigen Aufgaben konkurrieren. Eine hat Nice-Wert 0 und die andere Nice-Wert 15. Welche hat die niedrigere CPU-Scheduling-Priorität?
  1. Die Aufgabe mit Nice-Wert 0
  2. Beide haben dieselbe Priorität
  3. Die Aufgabe mit der niedrigeren PID
  4. Die Aufgabe mit Nice-Wert 15
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 4 von 10

Software benötigt 64-Bit-ARM, 6 verfügbare CPUs und 8 GB nutzbaren Arbeitsspeicher. Ein Hostsystem meldet aarch64, einen Sockel mit vier Kernen und zwei Threads pro Kern, nproc 4 und 7,6 GiB nutzbaren Arbeitsspeicher. Welche Anforderungen sind erfüllt?
  1. Architektur und CPUs sind ausreichend; der nutzbare Arbeitsspeicher nicht.
  2. Architektur und Arbeitsspeicher sind ausreichend; die verfügbare CPU-Anzahl nicht.
  3. Alle sind erfüllt, weil acht Hardware-Threads sechs übersteigen.
  4. Nur der Arbeitsspeicher reicht, weil aarch64 nicht arm64 ist.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 5 von 10

Die Beschriftung eines Laufwerks nennt 1 TB und eine Auflistung in binären Einheiten zeigt etwa 931 GiB. Was erklärt den Unterschied?
  1. Die fehlende Kapazität muss vollständig dem Auslagerungsspeicher zugeteilt sein.
  2. Die Beschriftung verwendet dezimale Bytes und die Auflistung binäre Einheiten.
  3. Die Auflistung hat Hardware-Threads statt Datenträgerblöcken gezählt.
  4. Das Laufwerk kann den Unterschied durch einen neuen Treiber zurückgewinnen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 6 von 10

Ein Kollege sagt, dass apt eine mit pip installierte Python-Bibliothek als installiertes Debian-Paket auflistet. Warum ist diese Schlussfolgerung falsch?
  1. Pip ändert nur Kernelmodule, keine Python-Bibliotheken.
  2. APT verzeichnet Bibliotheken erst nach jedem Systemneustart.
  3. APT listet jede heruntergeladene Datei als installiertes Paket auf.
  4. Pip und apt führen getrennte Installationseinträge.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 7 von 10

Ein deaktivierter Dienst ist aktiv und sein Socket ist aktiviert. Wie kann dieser Zustand entstehen?
  1. Der Dienst muss heimlich aktiviert sein, weil er aktiv ist.
  2. Deaktiviert bedeutet, dass seiner Statusausgabe nicht mehr zu trauen ist.
  3. Der Socket kann ihn ohne Aktivierungslinks des Dienstes aktivieren.
  4. Ein deaktivierter Dienst kann nur nach einer Kernelaktualisierung laufen.
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 8 von 10

Nginx bedient weiterhin Anfragen. Du hast ExecStart seiner Unit direkt auf einen gültigen neuen Programmpfad geändert und auch nginx-Einstellungen bearbeitet; nginx -t findet jetzt einen Syntaxfehler. Welche Reihenfolge wendet beide beabsichtigten Änderungen mit einer geprüften Konfiguration an?
  1. nginx-Einstellungen korrigieren und erfolgreich prüfen, daemon-reload, dann neu starten und prüfen
  2. Zuerst daemon-reload, nginx sofort neu laden, dann den alten Prozess weiterlaufen lassen
  3. Sofort neu starten, dann mit enable die vorherige Konfiguration wiederherstellen
  4. nginx-Einstellungen korrigieren und erfolgreich prüfen, dann nur die Anwendung neu laden
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 9 von 10

Auf Ubuntu traten am 2026-10-20 von 10:00 bis 10:30 Uhr während des vorherigen Systemstarts fehlgeschlagene SSH-Anmeldungen auf. Das Journal bewahrt diesen Systemstart auf. Welcher Befehl wählt diese Diensteinträge aus, ohne Anmeldemeldungen auf Informationsstufe auszuschließen?
  1. sudo journalctl -u ssh -b --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  2. sudo journalctl -u ssh -b -1 -p err --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  3. sudo journalctl -k -b -1 --since "2026-10-20 10:00" --until "2026-10-20 10:30"
  4. sudo journalctl -u ssh -b -1 --since "2026-10-20 10:00" --until "2026-10-20 10:30"
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Frage 10 von 10

Du musst ein Verzeichnis zwischen Linux-Rechnern übertragen, Eigentümermetadaten für eine Wiederherstellung als root erhalten und bestätigen, dass die Übertragung die Bytes bewahrt hat. Welcher Plan passt?
  1. Jede Datei mit gzip komprimieren, nur Dateinamen vergleichen, dann den Quellbaum entfernen
  2. Ein tar.gz-Archiv erstellen, SHA-256-Werte vergleichen, dann eine Wiederherstellung testen
  3. Das Verzeichnis mit der Endung .zip umbenennen, dann die Gesamtzahl der Dateien vergleichen
  4. Ein tar.gz-Archiv erstellen, seine Endung prüfen, dann alle Dateien als angekommen ansehen
Antwort zeigenAntwort ausblenden

Speichere diese Einheit, um diese Antwort zu sehen.

Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe

Schlüsselbegriffe

78 Schlüsselbegriffe, jeweils mit Definition

A

Abfrage der Paketzugehörigkeit einer Datei
Eine Abfrage der Paketzugehörigkeit einer Datei findet mithilfe der Paketdatenbank das installierte Paket, das einen angegebenen Pfad bereitgestellt hat, statt einen Paketnamen anhand des Befehlsnamens zu vermuten.
Verwende auf einem RPM-System rpm -qf für eine installierte ausführbare Datei, deren Paketnamen du nicht kennst.
Abhängigkeit
Eine Abhängigkeit ist ein anderes Paket, das Software zum Funktionieren benötigt, etwa eine gemeinsam genutzte Bibliothek, die ihre ausführbare Datei verwendet.
Bei der Installation einer kleinen Anwendung können auch mehrere Bibliotheken installiert werden, die ihre Abhängigkeiten erfüllen.
Aktivierung
Die Aktivierung ist eine Konfiguration über Links, die den automatischen Start einer Unit einrichtet, gewöhnlich als Teil eines Targets für den Systemstart.
Ein deaktivierter Dienst kann dennoch laufen, weil er manuell gestartet oder durch einen Socket aktiviert wurde.
Aktivitätszustand
Der Aktivitätszustand eines Dienstes beschreibt seinen aktuellen Zustand, etwa laufend, inaktiv oder fehlgeschlagen. Auch eine abgeschlossene Aufgabe kann als aktiv gelten.
Ein aktivierter Dienst kann den Aktivitätszustand „fehlgeschlagen“ haben, nachdem seine Anwendung eine Konfiguration zurückgewiesen hat.
Aktualisierung der Paketlisten
Eine Aktualisierung der Paketlisten lädt aktuelle Informationen aus Paketquellen herunter, damit der Paketmanager verfügbare Versionen kennt, ohne sie zu installieren.
Nach einem apt update kann eine neuere Anwendung als verfügbar aufgeführt sein, während die alte installiert bleibt.
Archiv
Ein Archiv bündelt mehrere Dateien und Verzeichnisse in einem Objekt und bewahrt gespeicherte Eintragsnamen und ausgewählte Dateimetadaten.
Ein tar-Archiv kann einen Linux-Verzeichnisbaum bewahren, während ein Komprimierungsprogramm dessen Größe gesondert verringert.
Archiveintrag
Ein Archiveintrag ist eine gespeicherte Datei oder ein gespeicherter Verzeichniseintrag, der durch seinen Pfad innerhalb eines Archivs bezeichnet wird. Dieser kann sich vom ursprünglichen Pfad unterscheiden.
Zum Entpacken einer einzelnen Datei wird der in der Auflistung gezeigte Eintragsname einschließlich eines Verzeichnispräfixes benötigt.
Auslagerungsspeicher
Auslagerungsspeicher ist Speicherplatz für aus dem Arbeitsspeicher ausgelagerte Speicherseiten. Er bietet zusätzliche Kapazität, auf die langsamer als auf physischen Arbeitsspeicher zugegriffen wird.
Zunehmende Nutzung des Auslagerungsspeichers zusammen mit wenig verfügbarem Arbeitsspeicher deutet darauf hin, dass die Arbeitslast überprüft werden sollte.
Autoremove
Autoremove entfernt nach Prüfung der Transaktion automatisch installierte Abhängigkeitspakete, die von den installierten Paketen nicht mehr benötigt werden.
Eine für eine Anwendung hinzugefügte Bibliothek kann für autoremove infrage kommen, wenn die Anwendung entfernt wird.

B

Begrenzung der Starthäufigkeit
Eine Begrenzung der Starthäufigkeit beschränkt wiederholte Startversuche eines Dienstes innerhalb eines konfigurierten Zeitraums und verhindert endlose schnelle Wiederholungen bei Fehlerschleifen.
Behebe den ursprünglichen Fehler, bevor du die Zähler der Begrenzung mit reset-failed zurücksetzt und einen neuen Start testest.
Blockgerät
Ein Blockgerät ist ein Gerät, auf das über adressierbare Speicherblöcke zugegriffen wird, etwa ein unter /dev. dargestellter Datenträger oder eine Partition.
Der lsblk-Baum ordnet eine Partition unter dem Datenträger ein, dessen Speicher sie in getrennte Bereiche aufteilt.

D

Dateimetadaten
Dateimetadaten beschreiben Eigenschaften wie Eigentümer, Berechtigungsmodi und Zeitstempel, die tar zusammen mit Dateiinhalten aufzeichnet.
Eine Wiederherstellung als root kann aufgezeichnete Eigentümer anwenden, während eine Wiederherstellung als regulärer Benutzer normalerweise Dateien erstellt, die diesem Benutzer gehören.
Dienst
Ein Dienst ist verwaltete Hintergrundarbeit, die eine Funktion bereitstellt, etwa ein Webserver oder SSH-Daemon, und gewöhnlich ohne Terminal läuft.
Ein Dienst kann weiterhin Anfragen bedienen, nachdem der Administrator das zum Start verwendete Terminal geschlossen hat.
Drop-in
Ein Drop-in ergänzt eine Unit-Definition um lokale Einstellungen, sodass Administratoränderungen von Dateien aus Paketen getrennt bleiben.
Eine in einem lokalen Drop-in gespeicherte Restart-Einstellung kann erhalten bleiben, wenn die Unit des Herstellers bei einer Aktualisierung ersetzt wird.

E

E/A-Wartezeit
E/A-Wartezeit ist CPU-Leerlaufzeit, die während ausstehender E/A-Vorgänge erfasst wird. Sie wird in top als wa angezeigt und hilft bei der Untersuchung von Verzögerungen durch Speicherzugriffe.
Ein hoher wa-Wert und wenig CPU-Arbeit von Benutzerprogrammen machen eine Speicherprüfung sinnvoller als das Ändern von Nice-Werten.
Entpacken
Das Entpacken stellt Archiveinträge im Dateisystem wieder her und löst ihre gespeicherten Pfade unterhalb des ausgewählten Zielverzeichnisses auf.
Stelle beim Prüfen eines unbekannten Archivs den Inhalt in einem leeren Verzeichnis wieder her, damit vorhandene Dateien nicht überschrieben werden.
ExecStart
ExecStart ist die Diensteinstellung, die ein auszuführendes Programm über einen absoluten Pfad zur ausführbaren Datei oder einen einfachen Namen angibt.
Ein Befehl, der mit ./worker beginnt, hat einen relativen Pfad mit Schrägstrich und ist keine gültige Form für die ausführbare Datei.

F

Firmware-Tabelle
Eine Firmware-Tabelle verzeichnet Hardwareinformationen, die die Firmware des Rechners bereitstellt und die Werkzeuge wie dmidecode lesen können.
Ein Speichersteckplatzbericht von dmidecode kann die für jedes Modul verzeichnete Größe und den Typ nennen.
Flüchtiges Journal
Ein flüchtiges Journal hält Einträge unter /run/log/journal, sodass sie beim Herunterfahren verloren gehen, statt in den nächsten Systemstart übernommen zu werden.
Nach einem Neustart kann ein flüchtiges Journal den Dienstfehlerverlauf des vorherigen Systemstarts nicht liefern.

G

Gerätedatei
Eine Gerätedatei ist eine spezielle Datei, gewöhnlich unter /dev, über die Software auf ein vom Kernel dargestelltes Gerät zugreift.
Der NVMe-Partitionsname /dev/nvme0n1p2 bezeichnet eine Partition und kein Dateiverzeichnis.
gzip
Gzip ist ein Komprimierungsformat und Werkzeug für einzelne Dateien, das häufig für Protokolle und tar-Archive verwendet wird und breite Unterstützung mit guter Geschwindigkeit verbindet.
Gzip -k behält ein unkomprimiertes Protokoll und erstellt eine .gz-Kopie zum Speichern oder Übertragen.

H

Hintergrundjob
Ein Hintergrundjob ist von der Shell verwaltete Arbeit, die läuft, ohne den Vordergrund zu belegen, sodass die Shell weitere Befehle annehmen kann.
Ein Bericht im Hintergrund kann weiter in die Eingabeaufforderung schreiben, sofern seine Ausgabe nicht umgeleitet wurde.

I

Installationskandidat
Ein Installationskandidat ist die Paketversion, die APT gemäß seiner konfigurierten Richtlinie derzeit für eine Installation oder Aktualisierung auswählen würde.
Ein Installationskandidat kann sich nach der Aktualisierung der Paketquellenlisten ändern, obwohl die installierten Dateien gleich bleiben.
Installierte Version
Eine installierte Version ist die lokal als installiert verzeichnete Paketversion, im Unterschied zu einer Version, die lediglich in einer Paketquelle verfügbar ist.
Eine policy-Abfrage kann vor einer Aktualisierung 2.4 als installiert und 2.6 als Installationskandidaten anzeigen.

J

Jobnummer
Eine Jobnummer ist eine lokale Kennung der Shell zur Auswahl eines Jobs. Sie unterscheidet sich von der daneben ausgegebenen systemweiten Prozess-ID.
In [2] 7164 wählt fg %2 den Job aus; 7164 bezeichnet seinen Prozess auf Betriebssystemebene.
Journal-Bereinigung
Die Journal-Bereinigung entfernt alte archivierte Journaldateien, um ausgewählte Aufbewahrungsgrenzen einzuhalten, und lässt aktive Journaldateien unberührt.
Die gesamte Speicherplatzbelegung kann über einem Größenlimit für die Bereinigung bleiben, weil aktive Dateien in der Belegungsanzeige mitzählen.

K

Kernel-Protokoll
Das Kernel-Protokoll zeichnet Ereignisse des Betriebssystemkerns auf, darunter Hardwareerkennung, Treiberfehler und Maßnahmen bei Speichermangel.
Verschwindet ein Prozess still, prüfe Kernelmeldungen auf eine Beendigung durch den OOM-Killer, bevor du einen Anwendungsfehler annimmst.
Kernelmodul
Ein Kernelmodul ist ein Teil des Kernelcodes, der in einen laufenden Kernel geladen werden kann, oft um Hardwareunterstützung bereitzustellen.
Die Modulliste zeigt geladenen Code; eine Geräteauflistung hilft festzustellen, welcher Treiber tatsächlich gebunden ist.
Komprimierung
Komprimierung kodiert Daten in weniger Bytes, wenn ihr Inhalt es erlaubt. Dafür werden Rechenarbeit und manchmal Arbeitsspeicher gegen geringeren Speicherplatzbedarf eingetauscht.
Textprotokolle schrumpfen oft viel stärker als JPEG-Bilder, weil die Bilder bereits komprimiert sind.
Konfigurationsprüfung
Eine Konfigurationsprüfung prüft die vorgesehenen Einstellungen einer Anwendung vor ihrer Anwendung und nennt Syntaxfehler oft mit Datei und Zeile.
Ein erfolgreiches nginx -t nach einer Korrektur gibt Anlass, mit dem geplanten Neuladen oder Neustart fortzufahren.

L

Logische CPU
Eine logische CPU ist eine für das Scheduling bereitgestellte Verarbeitungseinheit. Mehrere logische CPUs können sich durch Hardware-Multithreading einen physischen Kern teilen.
Sechs Kerne mit jeweils zwei Threads stellen 12 logische CPUs bereit, obwohl es weiterhin sechs Kerne sind.
Logrotation
Logrotation begrenzt das Wachstum von Textprotokollen, indem neue Dateien begonnen, ältere umbenannt und oft komprimiert und abgelaufene Einträge entfernt werden.
Eine fehlgeschlagene Anmeldung von letzter Woche kann in einer komprimierten rotierten Datei statt im heutigen Authentifizierungsprotokoll stehen.

M

Maskierung
Eine systemd-Maskierung blockiert neue Starts einer Unit, gewöhnlich über einen Link auf /dev/null, einschließlich manueller Starts und Starts durch Abhängigkeiten.
Ein maskierter Dienst, der bereits lief, benötigt eine separate Stoppanforderung, wenn er seine Arbeit einstellen muss.
MemTotal
MemTotal ist der vom Kernel in /proc/meminfo gemeldete nutzbare physische Arbeitsspeicher, ohne Speicher, der vor der gewöhnlichen Nutzung reserviert wird.
Installierte Module können zusammen 16 GiB umfassen, auch wenn MemTotal eine etwas kleinere nutzbare Menge meldet.
Mittlere Systemlast
Die mittlere Systemlast ist die durchschnittliche Anzahl laufbereiter und nicht unterbrechbar wartender Prozesse. Sie wird für 1, 5 und 15 Minuten angegeben.
Eine hohe Systemlast bei geringer CPU-Aktivität kann deine Untersuchung auf blockierte Speicherzugriffe lenken.

N

Neuladen
Das Neuladen eines Dienstes fordert eine Anwendung, die es unterstützt, auf, ihre eigene Konfiguration ohne vollständiges Stoppen und Starten erneut einzulesen.
Prüfe die bearbeitete nginx-Konfiguration vor dem angeforderten Neuladen, damit Fehler vor dem Anwenden gefunden werden.
Neuladen der Unit-Definitionen
Das Neuladen der Unit-Definitionen veranlasst systemd, seine Unit-Definitionen erneut einzulesen, ohne selbst eine Anwendung neu zu laden oder jeden Dienst neu zu starten.
Lade nach der direkten Änderung eines Unit-Befehls die Definitionen neu und starte diesen Dienst neu, um den neuen Befehl zu verwenden.
Neustart
Ein Neustart eines Dienstes stoppt die verwaltete Arbeit und startet sie anschließend, sodass neue Einstellungen oder ersetzter Programmcode wirksam werden können.
Ein Neustart eines funktionierenden Dienstes mit ungültiger Konfiguration kann ihn gestoppt zurücklassen, nachdem der neue Start fehlgeschlagen ist.
Neustartrichtlinie
Die Neustartrichtlinie eines Dienstes bestimmt, welche Prozessenden automatische Wiederherstellungsversuche auslösen, vorbehaltlich Begrenzungen und ausdrücklicher Stoppanforderungen.
On-failure kann nach einem Absturz neu starten, während ein beabsichtigtes systemctl stop den Dienst gestoppt hält.
Nice-Wert
Ein Nice-Wert passt die gewöhnliche CPU-Scheduling-Priorität an, wobei höhere Werte konkurrierenden Aufgaben mehr Gelegenheit zur Ausführung geben.
Eine Sicherung mit Nice-Wert 15 kann interaktiver Arbeit CPU-Zeit überlassen und eine untätige CPU dennoch auslasten.

O

OOM-Killer
Der OOM-Killer ist ein Kernelmechanismus, der einen ausgewählten Prozess beendet, wenn wegen Speichermangels Kapazität freigegeben werden muss.
Ein OOM-Eintrag kann erklären, warum eine Anwendung verschwand, ohne einen eigenen Fehler zu protokollieren.

P

Paketaktualisierung
Eine Paketaktualisierung ersetzt installierte Software durch eine ausgewählte neuere Paketversion, abhängig von den Abhängigkeitsregeln des Paketmanagers.
Nach der Installation einer Kernelaktualisierung läuft der alte Kernel weiter, bis der Rechner in den neuen startet.
Paketmetadaten
Paketmetadaten beschreiben die Identität und Anforderungen eines Pakets. Sie helfen Werkzeugen, kompatible Software auszuwählen, zu installieren und abzufragen.
Die Felder für Architektur und Abhängigkeiten helfen einem Paketmanager, die Installationstransaktion zu planen.
Paketquelle
Eine Paketquelle bietet Paketdateien und Indizes an, die verfügbare Software, Versionen und Anforderungen für einen Paketmanager beschreiben.
Durch das Aktualisieren der Paketquelleninformationen kann apt installierte Versionen mit neueren verfügbaren Installationskandidaten vergleichen.
Paketverwaltungssperre
Eine Paketverwaltungssperre koordiniert den Zugriff auf Paketeinträge, damit gleichzeitige Installations- oder Wartungsprozesse keine widersprüchlichen Änderungen schreiben.
Ein automatisches Aktualisierungsprogramm kann die Sperre halten, während du darauf wartest, eine interaktive Installation zu beginnen.
Persistentes Journal
Ein persistentes Journal bewahrt Einträge auf dem Datenträger unter /var/log/journal auf, sodass frühere Systemstarts abgefragt werden können, bis die Aufbewahrungsregeln sie entfernen.
Eine Kerneluntersuchung des vorherigen Systemstarts benötigt aufbewahrte Einträge und nicht nur den aktuellen Kernelpuffer.
Physischer Prozessorkern
Ein physischer Prozessorkern ist der Hardware-Ausführungskern eines Prozessors, der durch simultanes Multithreading mehr als eine logische CPU bereitstellen kann.
Zähle Sockel und Kerne pro Sockel, bevor du die Anzahl physischer Kerne eines Servers angibst.
PID
Eine PID ist die numerische Prozess-ID, die einen laufenden Prozess identifiziert; der Kernel kann diese Nummer nach dem Ende des Prozesses erneut vergeben.
Bevor du ein Signal an PID 6051 sendest, prüfe, ob sie noch den gewünschten Befehl bezeichnet.
Portkonflikt
Ein Portkonflikt entsteht, wenn ein Dienst seine angeforderte Adresse und seinen Port zum Lauschen nicht belegen kann, weil ein inkompatibles lauschendes Programm sie bereits belegt.
Identifiziere das bereits lauschende Programm, bevor du entscheidest, ob du es stoppst oder die Konfiguration eines Dienstes änderst.
PPID
Eine PPID ist die Prozess-ID eines Elternprozesses. Sie bezeichnet den Prozess, der einen anderen Prozess gestartet hat, und verbindet diesen mit seiner Prozessfamilie.
Die PPID neben einem Terminalbefehl stimmt häufig mit der PID der Shell überein, die ihn gestartet hat.
Priorität
Eine Priorität im Journal bezeichnet den Schweregrad einer Meldung, nummeriert von 0 für Notfall bis 7 für Fehlersuche, wobei niedrigere Zahlen schwerwiegender sind.
Eine err-Schwelle behält Fehler und schwerwiegendere Einträge, blendet aber Informationsmeldungen aus, die dennoch helfen könnten.
Prozess
Ein Prozess ist eine laufende Instanz eines Programms mit eigener Identität, eigenem Arbeitsspeicher und Ressourcen, die vom Betriebssystem verwaltet werden.
Zwei getrennte sleep-Befehle erzeugen zwei Prozesse, obwohl sie dasselbe Programm ausführen.
Prozessorarchitektur
Eine Prozessorarchitektur bezeichnet die Maschinencodefamilie, die ein System ausführt, etwa x86_64 oder aarch64. Sie beeinflusst die Paketkompatibilität.
Ein ARM-Paket wird nicht allein dadurch mit einem x86-Server kompatibel, dass beide Linux verwenden.
Prüfsumme
Eine Prüfsumme ist ein aus Dateibytes berechneter Wert, der zwischen Kopien verglichen werden kann, um festzustellen, ob ihre Inhalte übereinstimmen.
Vergleiche nach der Übertragung eines Archivs die SHA-256-Werte und prüfe dann gesondert, ob das Archiv die gewünschten Dateien enthält.

R

Ringpuffer
Ein Ringpuffer ist ein Speicher fester Größe, der beim Füllen seine ältesten Einträge durch neue ersetzt, wie bei Kernelmeldungen.
Der aktuelle Kernelpuffer kann alte Erkennungsmeldungen verlieren, während das persistente Journal Kopien aufbewahrt.
RSS
RSS bezeichnet die Größe des residenten Speichers eines Prozesses, der sich aktuell im physischen Arbeitsspeicher befindet. ps zeigt sie gewöhnlich in Kibibyte an.
Eine große virtuelle Speicherzuweisung bei kleinem RSS-Wert muss nicht bedeuten, dass der Prozess entsprechend viel Arbeitsspeicher belegt.
Rückgabestatus
Ein Rückgabestatus ist ein Code, der beschreibt, wie ein Programm oder eine Startphase endete. Er hilft, einen Anwendungsfehler von einem Startfehler zu unterscheiden.
Ein Ergebnis 203/EXEC lenkt dich auf Startvoraussetzungen, bevor du die eigenen Startmeldungen der Anwendung durchsuchst.

S

SIGKILL
SIGKILL ist ein nicht abfangbares Beendigungssignal, das das Ende eines Prozesses erzwingt, ohne die normalen Aufräumarbeiten der Anwendung auszuführen.
Erzwinge das Ende erst, nachdem du bestätigt hast, dass der gewünschte laufende Prozess nicht auf TERM reagiert hat.
Signal
Ein Signal ist eine an einen Prozess übermittelte Benachrichtigung, die eine Handlung wie Beenden, Pausieren, Fortsetzen oder eine anwendungsspezifische Behandlung anfordert.
Ein Signal fordert nicht immer zum Beenden auf: SIGCONT setzt angehaltene Arbeit fort.
Signaturprüfung
Die Signaturprüfung prüft authentifizierte Daten anhand eines vertrauenswürdigen Signaturschlüssels und unterstützt so die Vertrauenskette eines Paketsystems zum Herausgeber.
Ein fehlender echter Schlüssel einer Paketquelle sollte ergänzt werden, ohne die Authentifizierungsprüfung abzuschalten.
SIGSTOP
SIGSTOP ist ein nicht abfangbares Signal, das die Ausführung eines Prozesses anhält und dabei seine Identität, seinen Arbeitsspeicher und andere Ressourcen erhält.
Ein angehaltener Testprozess bleibt in ps sichtbar und kann nach Empfang von SIGCONT fortgesetzt werden.
SIGTERM
SIGTERM ist das von kill verwendete Standard-Beendigungssignal. Es fordert zum Beenden auf und ein Programm kann es durch Aufräumcode behandeln.
Ein Editor kann auf SIGTERM reagieren, indem er vor dem Ende Dateien schließt, sofern sein Code diese Behandlung unterstützt.
Softwarepaket
Ein Softwarepaket bündelt Softwaredateien mit Installationsmetadaten, darunter Version, Architektur, Abhängigkeitsanforderungen und Einträge zur Paketzugehörigkeit von Dateien.
Ein Paket kann eine ausführbare Datei, Dokumentation und Konfigurationsdateien in verschiedenen Verzeichnissen ablegen.
Syslog
Syslog ist eine Systemschnittstelle zur Protokollierung und ein Meldungsformat, das oft von einem Dienst wie rsyslog verarbeitet wird, der konfigurierte Textprotokolle schreibt.
Einer journalbasierten Installation können Syslog-Textdateien fehlen, obwohl ihre Dienste weiterhin Ereignisse protokollieren.
systemd
systemd ist ein Init-System und eine Dienstverwaltung, die häufig als PID 1 läuft und systemweit Units aktiviert und überwacht.
Systemd kann einen fehlgeschlagenen Dienst gemäß seiner Unit-Richtlinie neu starten und dessen Ausgabe im Journal aufzeichnen.
systemd-Journal
Das systemd-Journal speichert gesammelte indizierte Einträge von Kernel, Systemstart und Programmen mit Feldern wie Zeit, Unit und Priorität.
Verwende journalctl zum Lesen von Journaldateien, statt ihren binären Inhalt mit einem Textdateibetrachter zu öffnen.

T

Target
Ein systemd-Target gruppiert Units zu einem benannten Systemzustand, etwa einem grafischen Desktop oder einer nicht grafischen Mehrbenutzerumgebung.
Wird multi-user.target als Standard festgelegt, ändert sich die Auswahl für künftige Systemstarts, ohne den aktuellen Desktop zu schließen.
Transaktion
Eine Paket-Transaktion ist ein aufgezeichneter Installations-, Entfernungs- oder Aktualisierungsvorgang, der ein oder mehrere Pakete und deren Änderungen umfasst.
Untersuche die Details einer DNF-Transaktion, um zu sehen, welche Bibliothek kurz vor dem Auftreten von Dienstfehlern geändert wurde.
Treiber
Ein Treiber ist Software, die dem Kernel die Kommunikation mit einem Gerät ermöglicht; die Erkennung an einem Bus allein belegt keinen funktionierenden Treiber.
Ein PCI-Adapter ohne Zeile für einen verwendeten Treiber muss weiter untersucht werden, bevor er Datenverkehr bedienen kann.

U

Unit
Eine Unit ist ein von systemd verwaltetes Objekt, das durch eine Definition für einen Dienst, Socket, ein Target, eine Einhängung oder eine andere Ressource beschrieben wird.
Die Endung in nginx.service bezeichnet die Unit als Dienst und nicht als Socket oder Target.
Unit-Datei
Eine Unit-Datei ist eine Textdefinition einer systemd-Unit, die in Abschnitte und Einstellungen für Ausführung, Abhängigkeiten und Installation gegliedert ist.
Systemctl cat zeigt die Basis-Unit-Datei des Dienstes und alle lokalen Überschreibungsdateien mit ihren Pfaden.
UUID
Eine UUID ist eine eindeutige Kennung für Ressourcen wie Dateisysteme. Sie hilft, diese unabhängig von veränderlichen Gerätenamen zu unterscheiden.
Vergleiche Modell, Kapazität und Dateisystem-UUID eines Datenträgers, wenn sich sein sd-Buchstabe seit gestern geändert hat.

V

Verfügbarer Arbeitsspeicher
Verfügbarer Arbeitsspeicher ist eine Schätzung des Arbeitsspeichers, den neue Arbeit ohne Auslagerung nutzen kann, einschließlich aus Caches zurückgewinnbarer Kapazität.
Ist wenig Arbeitsspeicher frei, lies die Spalte available, bevor du entscheidest, dass der Server mehr Speicher benötigt.
Vollständiges Entfernen (Purge)
Das vollständige Entfernen ist ein APT-Entfernungsvorgang, der auch die verwaltete Systemkonfiguration eines Pakets löscht, Daten in Home-Verzeichnissen der Benutzer aber unberührt lässt.
Wähle purge, wenn auch beibehaltene Systemeinstellungen entfernt werden sollen, nachdem du entschieden hast, welche Konfiguration du behalten möchtest.
Vordergrundjob
Ein Vordergrundjob ist von der Shell verwaltete Arbeit, die aktuell das Terminal steuert, während die Shell auf ihr Ende oder Anhalten wartet.
Nach fg %2 wirken Tastenkombinationen wie Strg+C auf den Job, der nun im Vordergrund ist.

X

xz
Xz ist ein Komprimierungsformat und Werkzeug, das oft kleinere Dateien als gzip erzeugt, aber mehr Komprimierungszeit und Arbeitsspeicher benötigt.
Bei einem Textarchiv für einen Download, dessen Größe wichtig ist, kann sich der zusätzliche Verarbeitungsaufwand von xz lohnen.

Z

ZIP
ZIP ist ein Archivformat, das das Zusammenfassen von Dateien mit Komprimierung verbindet und für die Weitergabe zwischen Desktopbetriebssystemen breit unterstützt wird.
Verwende zip -r, um ein Verzeichnis und seinen Inhalt für Kollegen mit Windows oder macOS zu verpacken.
Zombieprozess
Ein Zombieprozess ist ein beendeter Prozess, dessen Elternprozess seinen Rückgabestatus noch nicht abgeholt hat. Zurück bleibt ein kleiner, mit Z markierter Eintrag in der Prozesstabelle.
Wiederholte Zombieeinträge mit demselben Elternprozess deuten darauf hin, dass dieser die Endzustände seiner Kindprozesse nicht abholt.

Über diese Einheit

Von StudeliFehler melden

Erstelle deine eigenen Lernmaterialien

Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.

Jetzt starten