- Lernen
- Informatik & Informationswissenschaften
- IT, Netzwerke & Cloud
- Linux – Befehlszeile, Shellskripte und Systemverwaltung
- Linux-Prozesse, Pakete und Dienste
Linux-Prozesse, Pakete und Dienste
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
- 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 lesenErkläre, was ein Prozess ist, identifiziere ihn anhand seiner Prozess-ID und nutze
ps,pgrepund/proc, um Prozesse zu finden und ihren Zustand abzulesen. - CPU-Auslastung, Arbeitsspeicher und Systemlast mit top, free und uptime überwachenLies die laufend aktualisierte Prozessansicht in
top, beurteile den Arbeitsspeicher mitfreeund entscheide anhand der mittleren Systemlast, ob ein System überlastet ist. - Prozesse mit Signalen stoppenSende Signale mit
kill,pkillundkillall, 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 festlegenVerschiebe Befehle zwischen Vorder- und Hintergrund, lasse sie nach der Abmeldung weiterlaufen und ändere ihre CPU-Priorität mit
niceundrenice.
- Prozesse auflisten und die Ausgabe von ps lesen
- 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 identifizierenNutze
uname,lscpu,nproc,/procunddmidecode, um Architektur, CPUs, Arbeitsspeicher und Kernel eines Rechners zu ermitteln. - Datenträger, PCI- und USB-Geräte sowie ihre Treiber auflistenBenenne Speichergeräte richtig, liste die an einen Rechner angeschlossenen Geräte mit
lsblk,lspciundlsusbauf und finde die zugehörigen Treiber und Kernelmeldungen.
- Prozessor, Arbeitsspeicher und System identifizieren
- 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 verstehenErklä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 entfernenAktualisiere Paketinformationen, installiere und aktualisiere Software und entferne sie sauber mit
aptauf Systemen der Debian-Familie unddnfauf Systemen der Red-Hat-Familie. - Nach Paketen suchen und installierte Software untersuchenFinde 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.
- Softwarepakete, Paketquellen und Abhängigkeiten verstehen
- Prüfe, starte, stoppe, aktiviere und passe Hintergrunddienste mit
systemctlan und verstehe, wie systemd entscheidet, was beim Systemstart läuft.- systemd, Units und den Dienststatus verstehenErkläre, was ein Dienst und eine systemd-Unit sind, lies die Ausgabe von
systemctl statusund unterscheide zwischen einem laufenden und einem aktivierten Dienst. - Dienste starten, stoppen, aktivieren und deaktivierenSteuere Dienste mit
systemctlsofort und beim Systemstart, wende Konfigurationsänderungen sicher an und wähle das Standard-Target für den Systemstart. - Unit-Dateien lesen und anpassenFinde und lies die Unit-Datei eines Dienstes, ändere seine Einstellungen sicher mit Drop-ins und schreibe einen einfachen eigenen Dienst.
- systemd, Units und den Dienststatus verstehen
- Finde mithilfe des systemd-Journals, der Protokolldateien in
/var/logund 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 abfragenLies 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 lesenFinde und lies Textprotokolldateien in
/var/log, einschließlich älterer rotierter Dateien, und lies mitdmesgdie Kernelmeldungen über Hardware und Treiber. - Fehler bei einem Dienst Schritt für Schritt diagnostizierenKombiniere
systemctl,journalctlund die programmeigenen Prüfungen zu einem wiederholbaren Ablauf, der die Ursache eines Dienstfehlers findet und die Behebung bestätigt.
- Das systemd-Journal mit journalctl abfragen
- Fasse Dateien und Verzeichnisse mit
tarundzipzu 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 entpackenErstelle mit
tarkomprimierte Archive, prüfe ihren Inhalt und entpacke sie am richtigen Ort, ohne versehentlich Dateien zu überschreiben. - Dateien mit gzip, bzip2, xz und zip komprimierenKomprimiere und dekomprimiere einzelne Dateien, lies komprimierte Protokolle ohne sie zu entpacken, nutze
zipfür die Weitergabe und wähle ein Format nach Geschwindigkeit, Größe und Zweck.
- tar-Archive erstellen, ihren Inhalt auflisten und sie entpacken
Linux-Prozesse, Pakete und Dienste einfach erklärt
1Laufende 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:
| Befehl | Nützliche Spalten |
|---|---|
ps -ef | UID, PID, PPID, STIME, TIME, CMD |
ps aux | USER, 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
| Zustand | Bedeutung |
|---|---|
R | Laufend oder bereit für CPU-Zeit |
S | Wartet auf ein Ereignis |
D | Nicht unterbrechbar wartend, oft auf einen Speicherzugriff |
T | Angehalten oder pausiert |
Z | Zombieprozess: beendet, wartet auf Abholung durch den Elternprozess |
I | Inaktiver 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 -efzeigt Elternprozesse;ps auxergä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.
pgrepgrenzt eine Suche ein und/proc/PID/statusstellt 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:
| Feld | Was es angibt |
|---|---|
us, sy | Arbeit von Benutzerprogrammen und Kernelarbeit |
ni | Benutzerarbeit mit angepasster Nice-Priorität |
id | Leerlaufzeit |
wa | Leerlaufzeit während ausstehender E/A-Vorgänge |
hi, si | Verarbeitung von Hardware- und Software-Interrupts |
st | Zeit, 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
topsowohl 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
| Signal | Zweck |
|---|---|
SIGTERM | Zu einem sauberen Ende auffordern; Standard für kill |
SIGKILL | Beendigung ohne Aufräumarbeiten der Anwendung erzwingen |
SIGINT | Das Vordergrundprogramm unterbrechen, meist mit Strg+C |
SIGTSTP | Zum Pausieren auffordern, meist mit Strg+Z |
SIGSTOP | Eine Pause erzwingen |
SIGCONT | Einen angehaltenen Prozess fortsetzen |
SIGHUP | Das Schließen des Terminals melden; manche Dienste nutzen es zum Neuladen |
SIGQUIT | Beenden, 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;
killkann mehr als beenden. - Ein Zombieprozess lässt sich nicht erneut beenden, und das Warten auf Speicherzugriffe kann die Beendigung verzögern.
- Verwende
systemctl stopfü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,fgundbgverwenden shellinterne Jobnummern.- Strg+Z pausiert einen Job; es beendet ihn nicht.
- Setze Ausgabeumleitung und
nohupfü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.
2Hardware ü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
| Befehl | Information |
|---|---|
uname -r | Version des laufenden Kernels, etwa 6.8.0-45-generic |
uname -m | Architektur, etwa x86_64 oder aarch64 |
uname -a | Alle uname-Felder |
cat /etc/os-release | Name 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:
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-releasefür die Distribution unduname -rfür den laufenden Kernel. - Paketarchitekturbezeichnungen unterscheiden sich: Debian
amd64entsprichtx86_64. - Sockel, Kerne und Hardware-Threads bestimmen die Anzahl logischer CPUs.
nprocmeldet die dem aktuellen Prozess verfügbaren CPUs.- Der nutzbare Arbeitsspeicher kann kleiner sein als der installierte;
/proc/meminfoverwendet 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
| Werkzeug | Worauf du achtest |
|---|---|
lspci | PCI- und PCI-Express-Geräte, etwa Netzwerk- und Speichercontroller |
lspci -k | Der verwendete Treiber und mögliche Kernelmodule |
lsusb | USB-Geräte-IDs und -Beschreibungen |
lsusb -t | USB-Verbindungen als Baum, einschließlich Geschwindigkeiten |
lsmod | Geladene Kernelmodule |
modinfo e1000e | Informationen ü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
lsblkfür Blockgeräte,lspcifür PCI undlsusbfü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.
3Software 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
| Systeme | Paketformat | Werkzeug für Paketquellen | Grundlegendes Werkzeug |
|---|---|---|---|
| Debian, Ubuntu, Linux Mint | .deb | apt | dpkg |
| Fedora, RHEL, Rocky Linux, AlmaLinux, CentOS Stream | .rpm | dnf | rpm |
| openSUSE, SUSE Linux Enterprise | .rpm | zypper | rpm |
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-releasepassende Paketfamilie und das zugehörige Werkzeug für Paketquellen. - Übergeordnete Werkzeuge laden Abhängigkeiten;
dpkgundrpmarbeiten 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
| Aufgabe | Debian-Familie | Red-Hat-Familie |
|---|---|---|
| Paketlisten aktualisieren | sudo apt update | DNF aktualisiert veraltete Metadaten automatisch |
| Aktualisierungen einspielen | sudo apt upgrade | sudo dnf upgrade |
| nginx installieren | sudo apt install nginx | sudo dnf install nginx |
| nginx entfernen | sudo apt remove nginx | sudo dnf remove nginx |
| Nicht benötigte Abhängigkeiten entfernen | sudo apt autoremove | sudo 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 updateaktualisiert Listen;apt upgradeverä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
| Frage | Debian-Familie | Red-Hat-Familie |
|---|---|---|
| Was ist installiert? | apt list --installed oder dpkg -l | dnf list --installed oder rpm -qa |
| Welche Version eines Pakets ist installiert? | dpkg -l nginx | rpm -q nginx |
| Welche Dateien stammen von htop? | dpkg -L htop | rpm -ql htop |
| Zu welchem Paket gehört diese installierte Datei? | dpkg -S /usr/bin/htop | rpm -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 -Loderrpm -ql, um die Dateien eines Pakets abzufragen. - Verwende
dpkg -Soderrpm -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.
4Dienste 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:
| Endung | Aufgabe |
|---|---|
.service | Ein Programm oder eine Aufgabe ausführen und verwalten |
.socket | An einem Socket lauschen und bei Bedarf einen Dienst aktivieren |
.timer | Eine Aktivierung zeitlich planen |
.mount | Ein eingehängtes Dateisystem darstellen |
.target | Units 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ätszustand | Bedeutung |
|---|---|
active (running) | Das Programm des Dienstes läuft |
active (exited) | Eine abgeschlossene Aufgabe gilt weiterhin als aktiv |
inactive (dead) | Der Dienst ist nicht aktiv |
failed | Ein Start oder eine Ausführung ist fehlgeschlagen; untersuche Ergebnis und Protokolle |
activating | Der 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
| Befehl | Wirkung |
|---|---|
sudo systemctl start nginx | Jetzt starten |
sudo systemctl stop nginx | Jetzt stoppen |
sudo systemctl restart nginx | Stoppen und starten, wobei die laufende Arbeit unterbrochen wird |
sudo systemctl reload nginx | Einen Dienst, der es unterstützt, zum erneuten Einlesen der Konfiguration auffordern |
sudo systemctl reload-or-restart nginx | Wenn 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 --nowunddisable --nowverbinden 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:
| Abschnitt | Wichtige 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 mitsystemctl 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.
5Systemprotokolle 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:
| Option | Wirkung |
|---|---|
-r | Neueste zuerst |
-e | Ans Ende springen |
-n 50 | Letzte 50 Einträge |
-f | Eintreffende Einträge bis Strg+C fortlaufend anzeigen |
--no-pager | Direkt 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
- Bestätige das Symptom: Zum Beispiel schlägt eine lokale Webanfrage fehl.
- Führe
systemctl status NAMEaus und lies Active, Result und den Rückgabecode. - Lies
sudo journalctl -u NAME -boder mit-n 50 --no-pagerdie letzten 50 Einträge. - Nutze das eigene Fehlerprotokoll und die Konfigurationsprüfung der Anwendung.
- Korrigiere eine erkannte Ursache und wiederhole die zugehörige Prüfung.
- Starte den Dienst oder starte ihn neu, prüfe den Status und teste die tatsächliche Funktion.
- Vergleiche
systemctl is-enabled NAMEmit 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 Ergebnis | Nächste Prüfung |
|---|---|
203/EXEC | Pfad zur ausführbaren Datei, Ausführungsrecht und Möglichkeit, sie zu starten |
217/USER | Konto in User= und Möglichkeit, dessen Anmeldedaten einzurichten |
1/FAILURE | Eigene Fehlermeldungen der Anwendung |
oom-kill | OOM-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.
6Dateien 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
| Option | Aufgabe |
|---|---|
-c, -t, -x | Erstellen, auflisten oder entpacken; wähle eine Aktion |
-f FILE | Die Archivdatei benennen |
-v | Namen oder Details der Archiveinträge anzeigen |
-z, -j, -J | gzip, bzip2 oder xz verwenden |
-C DIR | Fü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
-feinen ausdrücklichen Archivdateinamen. -Csteuert 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
| Komprimierungsprogramm | Endung der komprimierten Datei | Befehl zum Dekomprimieren |
|---|---|---|
gzip | .gz | gunzip oder gzip -d |
bzip2 | .bz2 | bunzip2 oder bzip2 -d |
xz | .xz | unxz 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
1Eine ausgelastete Aufgabe finden und steuern
17 Schritte
- 1Einfü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.
- 2ErklärungEigentümer und Identität ermitteln
Führe
ps -effür eine systemweite Momentaufnahme mit PID und PPID aus. Ein von deinem Terminal gestarteter Befehl ist normalerweise ein Kindprozess dieser Shell.Verwende
ps auxfü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. - 3BeispielCPU-Zeit richtig lesen
Eine ps-Zeile zeigt START
09:00, TIME0:08und ZustandS. 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. - 4HerausforderungEinen wartenden Server beurteilen
Ein Server wurde gestern gestartet. Seine ps-Zeile enthält TIME
0:12, TTY?und ZustandS. 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.
- 5ErklärungDie Ressource beobachten, die sich verändert
Öffne
top. DrückePfür die Sortierung nach CPU-Verbrauch,Mfür Speicherverbrauch und1für einzelne CPUs. Drückeqzum 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 hoherst-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. - 6BeispielSystemlast und CPU-Kapazität gegenüberstellen
Angenommen,
nprocmeldet 4 und eine überwiegend CPU-lastige Arbeitslast zeigt die Systemlast6.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.
- 7KernaussageAvailable vor free lesen
free -hkann 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 -kdas plötzliche Ende erklären. - 8HerausforderungDie 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.
- 9ErklärungZuerst um ein sauberes Ende bitten
Ein Signal fordert einen Prozess zu einer Handlung auf.
kill PIDsendet 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 NAMEan. - 10BeispielBewusst pausieren und fortsetzen
kill -STOP 5120pausiert Prozess 5120;kill -CONT 5120setzt 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.
- 11HerausforderungEinen 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. - 12BeispielEinen Job verschieben, ohne ihn zu verlieren
Starte
sleep 300im Vordergrund und drücke dann Strg+Z. Bash meldet den Job als Stopped.bg %1setzt Job 1 fort und gibt dabei die Eingabeaufforderung zurück;fg %1holt ihn wieder in den Vordergrund.%1ist 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. - 13TippEine 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 %1von Bash kann einen vorhandenen Job aus der Jobtabelle der Shell entfernen, seine Ein- und Ausgaben benötigen aber weiterhin geeignete Ziele. - 14ErklärungPriorität senken, ohne die Geschwindigkeit zu begrenzen
Starte aufwendige Arbeit mit
nice -n 10 COMMANDausgehend vom üblichen Nice-Wert 0 oder ändere eine laufende Aufgabe mitrenice -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.
- 15HerausforderungEinen 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 9328senkt 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. - 16HerausforderungAus 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.
- 17ZusammenfassungDie 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.
2Einen nützlichen Hardwarebericht erstellen
10 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungFakten zur Anforderung sammeln
- 2ErklärungDie Systemebenen benennen
- 3BeispielDie CPU-Anordnung zählen
- 4ErklärungInstallierten und nutzbaren Arbeitsspeicher vergleichen
- 5HerausforderungEine Mindestanforderung prüfen
- 6BeispielEinen Speicherbaum lesen
- 7ErklärungEin Gerät mit seinem Treiber verbinden
- 8HerausforderungEinen neu angeschlossenen Datenträger identifizieren
- 9HerausforderungKapazität von Treiberunterstützung unterscheiden
- 10ZusammenfassungDen Bericht konkret gestalten
3Software installieren und Änderungen zurückverfolgen
14 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungDateien und Paketeinträge verbunden halten
- 2ErklärungDas Werkzeug für Paketquellen auswählen
- 3KernaussageEine Abhängigkeit gehört in den Plan
- 4HerausforderungDie zusätzlichen Pakete erklären
- 5BeispielVor der Installation aktualisieren
- 6ErklärungLesen, was eine Aktualisierung erlaubt
- 7TippEntscheiden, was beim Entfernen erhalten bleibt
- 8HerausforderungAktualisieren von Informationen und Einspielen trennen
- 9BeispielEinen Befehl zu seinem Paket zurückverfolgen
- 10ErklärungÜber installierte Dateien hinaus suchen
- 11HerausforderungDie Richtung der Abfrage wählen
- 12VerbindungEinen Fehler mit kürzlicher Wartung in Verbindung bringen
- 13HerausforderungAnhand der Hinweise reparieren
- 14ZusammenfassungDen tatsächlich benötigten Zustand prüfen
4Einen Dienst jetzt und nach einem Neustart ausführen
14 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungZwei Fragen zum Zustand stellen
- 2BeispielLoaded und Active lesen
- 3KernaussageEine aktive Unit braucht keinen laufenden Prozess
- 4HerausforderungDeaktiviert, aber laufend deuten
- 5ErklärungJetzt, später oder beides wählen
- 6BeispielEine Anwendungskonfiguration anwenden
- 7HerausforderungEinen Dienst blockieren und seinen Prozess berücksichtigen
- 8ErklärungDie wirksame Unit-Definition lesen
- 9BeispielEinen einfachen Vordergrundserver beschreiben
- 10BeispielEine Überschreibung bei Aktualisierungen erhalten
- 11HerausforderungEinen direkt bearbeiteten Befehl anwenden
- 12KernaussageNeustartregeln beachten einen angeforderten Stopp
- 13HerausforderungEinen Dienst nach einer Unit-Änderung prüfen
- 14ZusammenfassungDie Ebenen auseinanderhalten
5Die Ursache eines fehlgeschlagenen Dienstes finden
13 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungMit einem beobachtbaren Symptom beginnen
- 2ErklärungDienst und Versuch auswählen
- 3BeispielNützliche Meldungen niedriger Priorität behalten
- 4HerausforderungDen richtigen Systemstart durchsuchen
- 5ErklärungAnwendungsprotokolle und rotierte Protokolle finden
- 6BeispielEin stilles Anwendungsende untersuchen
- 7HerausforderungEine ältere Textquelle auswählen
- 8BeispielMit dem ersten ursächlichen Fehler beginnen
- 9BeispielEinen belegten Port zum belegenden Dienst zurückverfolgen
- 10KernaussageMit Ergebniscode die nächste Prüfung wählen
- 11HerausforderungEinen Fehler nach einer Startbegrenzung beheben
- 12HerausforderungPrüfen, ohne Belege zu verlieren
- 13ZusammenfassungJeden Befund den nächsten Schritt eingrenzen lassen
6Ein wiederherstellbares Archiv erstellen
11 Schritte
Speichere diese Einheit, um jede Interaktive Lektion Schritt für Schritt durchzugehen.
- 1EinführungDie Wiederherstellung vor dem Archiv planen
- 2ErklärungZusammenfassen und Verkleinern unterscheiden
- 3BeispielNützliche relative Pfade erstellen
- 4BeispielUntersuchen und Entpacken trennen
- 5HerausforderungDie Struktur nach dem Entpacken vorhersagen
- 6Tippf neben seinem Dateinamen halten
- 7ErklärungWissen, welche Originale erhalten bleiben
- 8BeispielEin Format für die Aufgabe wählen
- 9HerausforderungEin Protokoll beim Komprimieren behalten
- 10HerausforderungKopie und Inhalt prüfen
- 11ZusammenfassungPassendes Format und passende Prüfungen nutzen
Linux-Prozesse, Pakete und Dienste: Übungsaufgaben
Set 1: Prozesse, Pakete und Dienstzustände ablesen10 Übungsfragen
Frage 1 von 10
06:20 und TIME 0:04. Was gibt TIME an?Antwort zeigenAntwort ausblenden
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Frage 6 von 10
sudo apt update aus. Was hat sich nach erfolgreicher Ausführung geändert?Antwort zeigenAntwort ausblenden
Frage 7 von 10
enabled und inactive (dead). Wie ist diese Kombination zu verstehen?Antwort zeigenAntwort ausblenden
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Frage 10 von 10
/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?Antwort zeigenAntwort ausblenden
/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
[3] 9026. Wie holst du diesen Job in den Vordergrund?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
12.0, 8.0, 4.0. Was ist die beste Deutung?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Kernel driver in use. Was solltest du als Nächstes untersuchen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
/usr/bin/less gehört?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
app.log.2.gz. Wie kannst du diese ältere Datei direkt durchsuchen?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
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?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
report.log mit gzip komprimieren und die unkomprimierte Datei behalten. Welcher Befehl passt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
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
Z markiert und sein Elternprozess läuft weiter. Warum entfernt das Senden von SIGKILL an diese PID den Eintrag nicht?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
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?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
active (exited), nachdem er eine einmalige Einrichtungsaufgabe erfolgreich abgeschlossen hat. Was bedeutet dieser Zustand?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
journalctl -p err?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
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
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
/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?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
/usr/bin/scan. Du möchtest herausfinden, welches Paket aus einer Paketquelle genau diesen Pfad bereitstellt. Welche Abfrage passt?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
After=network.target in einer Unit-Datei für sich genommen fest?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
bundle/a.txt und bundle/b.txt auf. Du möchtest nur b.txt wiederherstellen. Welchen Eintragsnamen solltest du anfordern?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
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 2 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 3 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 4 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 5 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 6 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 7 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 8 von 10
nginx -t findet jetzt einen Syntaxfehler. Welche Reihenfolge wendet beide beabsichtigten Änderungen mit einer geprüften Konfiguration an?Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 9 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Frage 10 von 10
Antwort zeigenAntwort ausblenden
Speichere diese Einheit, um diese Antwort zu sehen.
Hängst du bei deiner eigenen Aufgabe fest? Hausaufgabenhilfe
Schlüsselbegriffe
A
Abfrage der Paketzugehörigkeit einer Datei
rpm -qf für eine installierte ausführbare Datei, deren Paketnamen du nicht kennst.Abhängigkeit
Aktivierung
Aktivitätszustand
Aktualisierung der Paketlisten
apt update kann eine neuere Anwendung als verfügbar aufgeführt sein, während die alte installiert bleibt.Archiv
Archiveintrag
Auslagerungsspeicher
Autoremove
B
Begrenzung der Starthäufigkeit
Blockgerät
/dev. dargestellter Datenträger oder eine Partition.D
Dateimetadaten
Dienst
Drop-in
E
E/A-Wartezeit
Entpacken
ExecStart
./worker beginnt, hat einen relativen Pfad mit Schrägstrich und ist keine gültige Form für die ausführbare Datei.F
Firmware-Tabelle
Flüchtiges Journal
/run/log/journal, sodass sie beim Herunterfahren verloren gehen, statt in den nächsten Systemstart übernommen zu werden.G
Gerätedatei
/dev, über die Software auf ein vom Kernel dargestelltes Gerät zugreift./dev/nvme0n1p2 bezeichnet eine Partition und kein Dateiverzeichnis.gzip
H
Hintergrundjob
I
Installationskandidat
Installierte Version
J
Jobnummer
[2] 7164 wählt fg %2 den Job aus; 7164 bezeichnet seinen Prozess auf Betriebssystemebene.Journal-Bereinigung
K
Kernel-Protokoll
Kernelmodul
Komprimierung
Konfigurationsprüfung
nginx -t nach einer Korrektur gibt Anlass, mit dem geplanten Neuladen oder Neustart fortzufahren.L
Logische CPU
Logrotation
M
Maskierung
/dev/null, einschließlich manueller Starts und Starts durch Abhängigkeiten.MemTotal
/proc/meminfo gemeldete nutzbare physische Arbeitsspeicher, ohne Speicher, der vor der gewöhnlichen Nutzung reserviert wird.Mittlere Systemlast
N
Neuladen
Neuladen der Unit-Definitionen
Neustart
Neustartrichtlinie
systemctl stop den Dienst gestoppt hält.Nice-Wert
O
OOM-Killer
P
Paketaktualisierung
Paketmetadaten
Paketquelle
Paketverwaltungssperre
Persistentes Journal
/var/log/journal auf, sodass frühere Systemstarts abgefragt werden können, bis die Aufbewahrungsregeln sie entfernen.Physischer Prozessorkern
PID
Portkonflikt
PPID
Priorität
Prozess
sleep-Befehle erzeugen zwei Prozesse, obwohl sie dasselbe Programm ausführen.Prozessorarchitektur
Prüfsumme
R
Ringpuffer
RSS
Rückgabestatus
S
SIGKILL
Signal
Signaturprüfung
SIGSTOP
SIGTERM
Softwarepaket
Syslog
systemd
systemd-Journal
T
Target
Transaktion
Treiber
U
Unit
nginx.service bezeichnet die Unit als Dienst und nicht als Socket oder Target.Unit-Datei
UUID
V
Verfügbarer Arbeitsspeicher
Vollständiges Entfernen (Purge)
Vordergrundjob
fg %2 wirken Tastenkombinationen wie Strg+C auf den Job, der nun im Vordergrund ist.X
xz
Z
ZIP
zip -r, um ein Verzeichnis und seinen Inhalt für Kollegen mit Windows oder macOS zu verpacken.Zombieprozess
- 1Linux und Open Source
- 2Linux-Befehlszeile
- 3Linux-Pipes und Textverarbeitung
- 4Shellskripterstellung
- 5Linux-Benutzer und Zugriffsrechte
- 6Linux-Prozesse, Pakete und Dienste
- 7Dateisysteme und Netzwerke unter Linux
Über diese Einheit
Erstelle deine eigenen Lernmaterialien
Mach aus deinen Notizen, Folien und Dokumenten Lernleitfäden, Übungsfragen, Karteikarten und 6 weitere Tools.