- Linux bildet die Grundlage moderner Server, Cloud-Lösungen, Sicherheits- und Entwicklungs-Workflows. Wer Linux lernt, dem eröffnen sich daher vielfältige technische Karrierewege.
- Die Beherrschung der Shell, des Dateisystems, der Textbearbeitung und des Bash-Scriptings vermittelt Ihnen die Kernkompetenzen, um Aufgaben zu automatisieren und Systeme effizient zu verwalten.
- Das Verständnis von Benutzern, Berechtigungen, Netzwerken, Protokollierung und Prozesssteuerung ist unerlässlich für sichere, stabile und wartungsfreundliche Linux-Umgebungen.
- Überwachung, Protokollanalyse und Tools wie cron, SSH und sar ermöglichen es Ihnen, Linux-Systeme in der Praxis zuverlässig zu betreiben, Fehler zu beheben und sie zu skalieren.
Wer eine sichere Karriere in der Tech-Branche anstrebt, sollte Linux lernen – das ist eine der klügsten Entscheidungen, die er treffen kann. Von Cloud-Servern und DevOps-Pipelines bis hin zu Cybersicherheitslaboren und Supercomputern: Linux ist im Hintergrund allgegenwärtig. Die Beherrschung von Linux macht ihn nicht nur schneller und effizienter bei alltäglichen Aufgaben, sondern eröffnet ihm auch Türen zu Positionen in der Systemadministration, im Cloud-Engineering, in der IT-Sicherheit, im SRE-Bereich und darüber hinaus.
Dieser Leitfaden führt Sie von den absoluten Grundlagen bis hin zu fortgeschrittenen Linux-Themen – praxisnah und bodenständig. Sie beginnen mit dem Verständnis von Linux selbst: Was ist Linux eigentlich? Wie wird es erstellt und verbreitet? Und wie installieren Sie es auf Ihrem eigenen Rechner? Anschließend lernen Sie die Kommandozeile, das Dateisystem, Textbearbeitung, Shell-Skripte, Paketverwaltung, Benutzer und Berechtigungen, Netzwerkfunktionen, Log-Analyse, Automatisierung mit Cron, Prozesssteuerung, Fehlerbehebung und vieles mehr kennen. Egal, ob Sie von Windows/macOS umsteigen oder Ihre bestehenden Kenntnisse erweitern möchten – Sie finden hier zahlreiche praktische Übungen für reale Systeme.
Warum Linux wichtig ist und wie es aufgebaut ist
Linux ist ein freies Open-Source-Betriebssystem, das von Unix inspiriert wurde und 1991 von Linus Torvalds erstmals veröffentlicht wurde. Open Source bedeutet, dass der Quellcode öffentlich zugänglich ist: Jeder kann ihn lesen, verändern und eigene Versionen davon verbreiten. Dieses kollaborative Modell hat Linux zum Rückgrat moderner Infrastrukturen gemacht: Webserver, Cloud-Plattformen, IoT-Geräte, Android-Smartphones, Chromebooks und vieles mehr nutzen es täglich.
Wenn von „Linux“ die Rede ist, werden oft drei verwandte, aber unterschiedliche Konzepte verwechselt: der Kernel, das Betriebssystem und die Distribution. Der Kernel ist das zentrale Programm, das Hardware-Ressourcen wie Arbeitsspeicher, CPU-Zeit, Festplatten und andere Geräte verwaltet und Systemaufrufe für Anwendungen bereitstellt. Hinzu kommen Systemdienstprogramme, Bibliotheken, Shells und Tools, die zusammen ein vollständiges Betriebssystem bilden. Eine Distribution (oder kurz „Distro“) bündelt den Linux-Kernel mit all dieser Benutzerraum-Software, einem Paketmanager und Installationsprogramm sowie Standardeinstellungen und Richtlinien, die von der Community oder einem Anbieter festgelegt wurden.
Da der Kernel Open Source ist, kann ihn jeder verwenden, Tools und Konfigurationen hinzufügen und seine eigene Distribution veröffentlichen. Deshalb gibt es so viele Varianten: manche klein und auf einen einzigen Zweck beschränkt, andere voll ausgestattet mit Tausenden von Paketen. Viele sind von anderen Distributionen abgeleitet – beispielsweise basieren Ubuntu und Kali auf Debian und verwenden dessen Paketverwaltungssystem, Repositories und einen Großteil der Toolchain. Abgeleitete Distributionen profitieren von der Stabilität, den Sicherheitsupdates und den umfangreichen Software-Repositories ihrer Mutterdistribution und konzentrieren sich gleichzeitig auf spezielle Funktionen, Standardeinstellungen oder Anwendungsfälle.
Beliebte, einsteigerfreundliche und fortgeschrittene Linux-Distributionen richten sich jeweils an unterschiedliche Zielgruppen und Arbeitsabläufe. Ubuntu ist eine der am weitesten verbreiteten Distributionen und dank starker Community-Unterstützung sehr einsteigerfreundlich. Linux Mint ist ebenfalls einsteigerorientiert und bietet standardmäßig Codecs und Multimedia-Unterstützung. Arch Linux ist minimalistisch und intuitiv gestaltet und richtet sich an erfahrene Nutzer, die volle Kontrolle und einen individuellen Ansatz bevorzugen. Manjaro basiert auf Arch, ergänzt dieses System aber um grafische Benutzeroberflächen und sinnvolle Standardeinstellungen. Kali Linux konzentriert sich auf Penetrationstests und bietet eine umfangreiche Sammlung vorinstallierter Sicherheits- und Hacking-Tools.
Linux auf Ihrem Rechner einrichten
Der beste Weg, Linux wirklich zu lernen, ist die tägliche Nutzung. Daher ist der erste Schritt, sich Zugang zu einer Linux-Umgebung zu verschaffen, mit der man sicher experimentieren kann. Je nach Bedarf und Hardware können Sie Linux als Hauptbetriebssystem installieren, es parallel zu Windows betreiben, in einer virtuellen Maschine ausführen, das Windows-Subsystem für Linux nutzen oder sogar komplett in browserbasierten Terminals oder Cloud-Instanzen arbeiten.
Die Installation von Linux als primäres Betriebssystem bietet Ihnen das reinste und schnellste Erlebnis. Ein gängiger Weg für Anfänger ist die Installation von Ubuntu LTS (Long Term Support) direkt auf dem Rechner. Sie laden die offizielle ISO-Datei herunter, erstellen einen bootfähigen USB-Stick (mit Tools wie Rufus unter Windows geht das ganz einfach), starten den Computer davon und folgen den Anweisungen des Installationsprogramms. LTS-Versionen bieten Ihnen mehrere Jahre lang Sicherheits- und Wartungsupdates, sodass Sie nicht oft neu installieren müssen. Nach der Installation starten Sie den Computer einfach neu, melden sich mit Ihren Anmeldedaten an und können sofort Ihren Desktop anpassen und Anwendungen installieren.
Es gibt einige erweiterte Installationsoptionen, die Sie erkunden sollten, sobald Sie sich damit vertraut gemacht haben. Die Festplattenpartitionierung ermöglicht es Ihnen, Ihre Festplatte in separate Partitionen für das Root-Verzeichnis, das Benutzerverzeichnis und gegebenenfalls eine dedizierte Daten- oder Backup-Partition aufzuteilen. Die Swap-Konfiguration kann den Ruhezustand aktivieren oder Systemen mit wenig Arbeitsspeicher mehr Leistung verschaffen. Diese Themen sind zwar nicht unbedingt notwendig, spielen aber auf Produktionsservern oder sorgfältig konfigurierten Workstations eine wichtige Rolle.
Wenn Sie Windows behalten, aber Linux regelmäßig nutzen möchten, stehen Ihnen mehrere gute Optionen zur Verfügung. Mit Dual-Boot können Sie Linux neben Windows installieren und beim Systemstart auswählen, welches Betriebssystem gestartet werden soll. Jedes System hat seine eigene Partition, aber es kann immer nur eines gleichzeitig ausgeführt werden. Virtuelle Maschinen, die mit Tools wie VirtualBox oder VMware erstellt wurden, ermöglichen es Ihnen, Linux als Gastsystem innerhalb von Windows auszuführen und der virtuellen Maschine CPU-Kerne, Arbeitsspeicher, Festplatten- und Netzwerkressourcen zuzuweisen. Browserbasierte Terminals und Cloud-VPS-Instanzen (AWS EC2, Azure, DigitalOcean u. a.) bieten Ihnen Remote-Linux-Shells, auf die Sie von überall aus zugreifen können, üblicherweise über SSH.
Unter Windows 10 und 11 ist das Windows-Subsystem für Linux (WSL2) eine fantastische Möglichkeit, einen vollständigen Linux-Benutzerbereich in Ihren Windows-Desktop zu integrieren. Sie aktivieren das „Windows-Subsystem für Linux“, öffnen ein Terminal mit Administratorrechten und führen folgenden Befehl aus: wsl --installStandardmäßig wird Ubuntu installiert. Nach einem Neustart werden Sie aufgefordert, einen Linux-Benutzernamen und ein Passwort zu erstellen. Anschließend können Sie Ubuntu über das Startmenü starten und wie eine normale Linux-Shell verwenden – es sind keine aufwändigen VM-Images erforderlich.
Unabhängig davon, wie Sie Linux installieren, werden Sie viel Zeit im Terminal verbringen, lernen Sie also, wie Sie es schnell öffnen können. Auf Ubuntu-Desktop-Computern können Sie nach „Terminal“ suchen, es an das Dock anheften oder die Tastenkombination verwenden. Ctrl+Alt+TViele Dateimanager ermöglichen es, ein Terminal direkt im aktuellen Ordner über eine Kontextmenüoption wie „Im Terminal öffnen“ zu öffnen, was äußerst praktisch ist, wenn man an Projektverzeichnissen arbeitet.
Sich mit den Grundlagen von Shell und Bash vertraut machen
Die wahre Stärke von Linux zeigt sich in der Kommandozeile, und das Programm, das diese Schnittstelle bereitstellt, heißt Shell. Im Laufe der Zeit sind verschiedene Shells entstanden (sh, ksh, csh, zsh usw.), aber auf den meisten modernen Linux-Distributionen ist Bash – die GNU Bourne Again Shell – standardmäßig installiert. Um zu überprüfen, welche Shell Sie aktuell verwenden, führen Sie folgenden Befehl aus: echo $SHELL; wenn Sie so etwas sehen wie /bin/bashDu befindest dich in Bash.
Der Terminalemulator ist das Fenster, in das Sie Ihre Befehle eingeben; die Shell ist das darin laufende Programm, das Ihre Befehle interpretiert. Oft werden die Begriffe synonym verwendet, aber es ist hilfreich, sie gedanklich zu trennen: Wenn Sie das GNOME-Terminal oder die Konsole öffnen, befindet sich das Terminal im Hintergrund; Bash (oder eine andere Shell) läuft darin und zeigt die Eingabeaufforderung an, in die Sie Befehle eingeben. Auf einem Server ohne grafische Oberfläche können Sie sich möglicherweise per SSH direkt mit einer Shell verbinden.
Die Shell-Eingabeaufforderung zeigt normalerweise Ihren Benutzernamen, den Hostnamen und das aktuelle Verzeichnis an, gefolgt von einem Zeichen, das Ihre Berechtigungsstufe angibt. Eine typische Eingabeaufforderung für Nicht-Root-Benutzer könnte wie folgt aussehen: [alice@server ~]$und eine Root-Eingabeaufforderung wie [root@server ~]#. Der $ bedeutet ein regulärer Benutzer, während # warnt Sie davor, dass Sie als Root agieren und möglicherweise mit einem einzigen fehlerhaften Befehl das System beschädigen können.
Die meisten Linux-Befehle folgen einer vorhersehbaren Struktur: einem Befehlsnamen, optionalen Flags und optionalen Argumenten. Ein allgemeines Muster sieht so aus: command [options] [arguments]. Beispielsweise, ls -a /var/log verwendet das ls Befehl mit dem -a Option (versteckte Dateien anzeigen) und /var/log als Argument (das aufzulistende Verzeichnis). Manche Befehle funktionieren auch ohne Optionen oder Argumente; bei anderen müssen Sie beides angeben, sonst schlagen sie fehl.
Ihr bester Freund beim Erkunden von Befehlen ist das integrierte manuelle System. Die meisten Hilfsprogramme werden mit einer Manpage ausgeliefert: run man ls, man grepusw., und Sie erhalten ausführliche Dokumentationen zu Verwendung, Optionen und Beispielen. Es ist ratsam, die Manpage jedes neuen Tools, das Sie verwenden, mindestens einmal zu überfliegen.
Bash unterstützt außerdem eine Reihe von Tastenkombinationen und praktischen Funktionen, die Ihren Arbeitsablauf massiv beschleunigen. Drücken Sie den Pfeil nach oben, um durch die vorherigen Befehle zu blättern. Ctrl+A um zum Anfang der aktuellen Zeile zu springen, Ctrl+K um vom Cursor bis zum Zeilenende zu löschen, und Tab zur automatischen Vervollständigung von Befehlen und Dateipfaden. history Der Befehl gibt Ihre zuletzt verwendeten Befehle aus, die Sie wiederverwenden oder durchsuchen können.
Sie können jederzeit mit dem kleinen, aber nützlichen Tool überprüfen, als welcher Benutzer Sie gerade agieren. whoami Befehl. Schreib einfach whoami und drücken Sie die Eingabetaste; die Shell gibt Ihren effektiven Benutzernamen aus. Dies ist besonders wichtig, wenn Sie zwischen Benutzern gewechselt haben (z. B. über …). su or sudound möchten sichergehen, dass Sie nicht versehentlich etwas Gefährliches als Root ausführen.
Linux-System und Hardwareinformationen verstehen
Bevor man mit dem Optimieren einer Maschine beginnt, ist es hilfreich zu wissen, mit welchem Betriebssystem, Kernel und welcher CPU man arbeitet. Das uname Der Befehl gibt Kernel- und Systeminformationen aus; uname -a Es zeigt Kernelname, Hostname, Kernelversion, Build-Zeitpunkt, Architektur und mehr an. So lässt sich schnell überprüfen, ob Sie ein 64-Bit-Linux-System verwenden, welche Kernelversion läuft und auf welcher Plattform Sie sich befinden.
Für tiefergehende Einblicke in den Prozessor selbst verwenden Sie lscpu. Es fasst die CPU-Architektur, die unterstützten Modi (32-Bit, 64-Bit), die Byte-Reihenfolge (Endianness), die Anzahl der Kerne, die Threads pro Kern, die Sockel und die minimalen/maximalen Taktraten zusammen. Diese Informationen sind unerlässlich für die Dimensionierung von Arbeitslasten, die Leistungsoptimierung und die Sicherstellung, dass die installierte Software für die richtige Architektur (z. B. x86_64 vs. ARM) kompiliert ist.
Arbeiten mit dem Linux-Dateisystem
Linux-Dateisysteme sind wie ein umgedrehter Baum mit einem einzigen Wurzelverzeichnis aufgebaut. / oben. Jede Datei und jedes Verzeichnis befindet sich irgendwo unterhalb dieses Stammverzeichnisses, und das Schrägstrichzeichen / wird als Pfadtrennzeichen verwendet. Ein vollständiger (absoluter) Pfad wie z. B. /home/alice/projects beginnt an der Wurzel und verläuft den Baum hinunter, während ein relativer Pfad wie projects/demo wird relativ zu Ihrem aktuellen Arbeitsverzeichnis interpretiert.
Die verschiedenen Verzeichnisse der obersten Ebene haben spezifische, standardisierte Zwecke, die Sie sich bei der Benutzung schnell einprägen werden. Zum Beispiel, /bin enthält wichtige Benutzerbefehle, /sbin enthält wichtige Systemdateien, /boot enthält Bootloader-Dateien, /etc speichert die systemweite Konfiguration, /home bietet persönliche Verzeichnisse für jeden Benutzer. /root ist das Home-Verzeichnis des Root-Benutzers, /lib und /usr/lib gemeinsam genutzte Bibliotheken hosten, /var enthält variable Daten wie Protokolle und Warteschlangen, und /tmp ist ein temporärer Bereich für Dateien.
Um jederzeit zu sehen, wo Sie sich im Verzeichnisbaum befinden, verwenden Sie pwd (Arbeitsverzeichnis drucken). Wenn Sie hin und her gesprungen sind, ein kurzer pwd zeigt Ihnen den absoluten Pfad Ihres aktuellen Verzeichnisses an. Um darin zu navigieren, verwenden Sie cd: cd /etc geht /etc, cd .. springt eine Stufe nach oben, cd ../.. steigt um zwei, cd or cd ~ kehrt zu Ihrem Home-Verzeichnis zurück, und cd - Wechselt zurück zum vorherigen Verzeichnis.
Die Verwaltung von Dateien und Ordnern über die Kommandozeile lässt sich auf eine Handvoll Kernwerkzeuge reduzieren. Verzeichnisse erstellen mit mkdir, optional unter Verwendung -p um verschachtelte Pfade auf einmal zu erstellen (zum Beispiel, mkdir -p tools/index/helper-scriptsErstellen Sie leere Dateien mit touch file.txtoder mehrere Dateien gleichzeitig mit touch file1.txt file2.txt file3.txtDateien entfernen mit rm, Verzeichnisse rekursiv löschen mit rm -rund entfernen Sie leere Verzeichnisse mit rmdir. Der -f Flagge an rm Erzwingt das Löschen ohne Rückfrage, daher ist Vorsicht geboten, insbesondere außerhalb Ihres Home-Verzeichnisses.
Kopieren, Verschieben und Umbenennen werden von cp und mv. Um eine Datei in ein anderes Verzeichnis zu kopieren, verwenden Sie cp source.txt /path/to/dest/Um eine Datei unter einem neuen Namen im selben Verzeichnis zu duplizieren, verwenden Sie cp old.txt new.txtEin Umzug funktioniert ähnlich: mv file1.txt backup/ verschiebt es nach backup, während mv oldname.txt newname.txt Es wird einfach umbenannt. Dieselben Befehle funktionieren auch für Verzeichnisse, solange Sie gegebenenfalls die richtigen Parameter angeben.
Linux bietet Ihnen außerdem leistungsstarke Suchfunktionen über die find Befehl. Das Grundmuster ist find /path -type X -name "pattern", Wobei -type f sucht nach regulären Dateien, -type d für Verzeichnisse, -type l für symbolische Links und -type b/c für Block- und Zeichengeräte. Sie können bestimmte Namen oder Platzhalter (z. B.) abgleichen. "*.log" (für Protokolldateien), einschließlich versteckter Dateien mit Mustern, die mit einem Punkt beginnen, Suche nach Größe mit -size (mögen +250M für Dateien, die größer als 250 MB sind), oder anhand der Änderungszeit mit -mtime (zum Beispiel, -mtime -10 um Dateien zu finden, die in den letzten 10 Tagen geändert wurden).
Wenn Sie den Inhalt einer Datei untersuchen möchten, steht Ihnen ein kleines Set an Befehlen zur Verfügung, das Sie ständig verwenden werden. cat Es wird eine ganze Datei auf einmal gedruckt, was für kleine Dateien ausreichend ist. less und more Sie können damit große Dateien Seite für Seite durchblättern, darin suchen und das Programm beenden. q. head zeigt die ersten Zeilen einer Datei an, tail zeigt die letzten Zeilen an, tail -f Eine Datei in Echtzeit verfolgen – ein unverzichtbarer Trick zum Überwachen von Protokollen. wc zählt Zeilen, Wörter und Bytes, während diff Vergleicht zwei Dateien Zeile für Zeile und zeigt die Unterschiede auf, entweder in einheitlicher Form oder nebeneinander.
Textbearbeitung mit Vim und Nano
Auf Servern und vielen Systemen ohne grafische Benutzeroberfläche werden Konfigurationen und Code ausschließlich über das Terminal bearbeitet. Daher ist es unerlässlich, mindestens einen Konsolen-Texteditor gut zu beherrschen. Zwei weit verbreitete Editoren sind Vim und Nano. Beide ermöglichen die Bearbeitung von Textdateien, unterscheiden sich aber in ihrer Philosophie: Vim ist modal und tastaturzentriert und richtet sich an fortgeschrittene Benutzer; Nano hingegen ist einfacher und leichter zu erlernen.
Vim ist unglaublich leistungsstark, sobald man die Lernkurve überwunden hat. Es verfügt über mehrere Modi: den Normalmodus (oder Befehlsmodus) zur Navigation und zum Bearbeiten von Befehlen, den Einfügemodus zum Eingeben von Text und visuelle Modi zum Auswählen von Zeichen, Zeilen oder Blöcken. Sie beginnen im Normalmodus; drücken Sie i, I, a, A, o or O Es gibt verschiedene Möglichkeiten, in den Einfügemodus zu gelangen und diesen zu verwenden. Esc Um in den Normalmodus zurückzukehren. Die Navigation kann mit den Pfeiltasten oder mit den klassischen Tasten erfolgen. h, j, k, l; 0 springt an den Anfang einer Zeile, $ bis zum Ende gg bis zum Anfang der Datei und G zum Boden.
Mit den Bearbeitungs-Shortcuts von Vim können Sie Texte in hoher Geschwindigkeit verschieben und bearbeiten, sobald sie sich in Ihr Muskelgedächtnis eingeprägt haben. Sie können ein Zeichen löschen mit xLöschen Sie eine ganze Zeile mit dd, kopieren (yank) mit yy oder visuelle Auswahl + yund fügen Sie unterhalb des Cursors Folgendes ein: p oder höher mit PDie Suche erfolgt mit /pattern in Zukunft oder ?pattern rückwärts; n springt zum nächsten Spiel und N zum vorherigen. Ein häufiges globales Such- und Ersetzungsmuster ist :%s/old/new/g alle Vorkommen von old und new in der Datei.
Beim Beenden von Vim dreht sich alles um Befehle, die mit einem Doppelpunkt beginnen. Hit Esc Um sicherzustellen, dass Sie sich im Normalmodus befinden, geben Sie Folgendes ein: :w sparen, :q Beenden (schlägt fehl, wenn ungespeicherte Änderungen vorhanden sind), :wq (oder :x) speichern und beenden, oder :q! Zum Beenden und Verwerfen der Änderungen. Sie können das Fenster auch teilen (:split und :vsplitund zwischen den Fenstern wechseln mit Ctrl+w gefolgt von h, j, k or l.
Nano hingegen legt Wert auf Einfachheit und Anfängerfreundlichkeit. Zum Öffnen oder Erstellen einer Datei führen Sie Folgendes aus: nano filenameSie bewegen den Cursor mit den Pfeiltasten, tippen Text ein und verwenden die Tastenkombinationen, die am unteren Bildschirmrand angezeigt werden – diese haben üblicherweise die Form ^O für Ctrl+O, ^X für Ctrl+X, Und so weiter. Ctrl+O spart, Ctrl+X Ausgänge (mit der Aufforderung zum Speichern, falls erforderlich), Ctrl+K schneidet eine Linie ab, Ctrl+U Pasten und Ctrl+W Sucht nach Text. Optionen wie -l werden Zeilennummern angezeigt, Alt+G ermöglicht es Ihnen, direkt zu einer bestimmten Zeile zu springen.
Einstieg in die Bash-Skripterstellung
Sobald Sie mit der manuellen Ausführung von Befehlen vertraut sind, besteht der nächste große Schritt darin, Befehlssequenzen in Skripte zu kapseln, um sie wiederzuverwenden und zu automatisieren. Ein Bash-Skript ist einfach eine Textdatei mit Befehlen, die Bash Zeile für Zeile ausführt. Indem Sie Aufgaben wie Aufräumroutinen, Backups oder Bereitstellungsschritte in Skripten speichern, reduzieren Sie Fehler und sparen enorm viel Zeit.
Konventionsgemäß haben Bash-Skripte oft ein .sh Eine Erweiterung ist zwar möglich, aber technisch nicht erforderlich. Was viel wichtiger ist, ist die Shebang Zeile am Anfang der Datei: etwa so #!/bin/bash or #!/usr/bin/env bashDie erste Zeile teilt dem System mit, welcher Interpreter beim Ausführen des Skripts verwendet werden soll. Den Pfad zu Bash finden Sie mit which bashUnd wenn Sie es explizit machen wollen, verwenden Sie das im Shebang.
Ein minimales Beispielskript könnte nach einem Verzeichnis fragen und dessen Inhalt auflisten. Sie könnten erstellen run_all.sh mit Inhalten wie: ein Shebang, ein echo das heutige Datum ausgibt (zum Beispiel mit Backticks oder $(date)), eine Eingabeaufforderung, die den Benutzer nach einem Pfad fragt, ein read Befehl zum Speichern dieser Eingabe in einer Variablen und schließlich ein ls Befehl, der diese Variable verwendet, um Dateien aufzulisten. Kommentare beginnen mit # und werden vom Dolmetscher ignoriert, daher können Sie jeden Schritt für sich und andere dokumentieren.
Um Skripte direkt auszuführen, müssen Sie sie ausführbar machen und sie dann aufrufen. Arbeiten jederzeit weiterbearbeiten können. Jede Präsentation und jeder KI-Avatar, den Sie von Grund auf neu erstellen oder hochladen, chmod u+x script.sh Um dem Besitzer die Ausführungsberechtigung zu erteilen, rufen Sie es entweder über die Shell auf (bash script.sh) oder führen Sie es aus als ./script.sh aus dem Verzeichnis, in dem es sich befindet. Wenn sich das Skript in Ihrem $PATHMan kann es von überall aus über seinen Namen aufrufen.
Bash-Variablen sind dynamisch typisierte Container, denen Sie Text oder Zahlen zuweisen und die Sie später wiederverwenden können. Sie weisen zu mit name=value (keine Leerzeichen) und Bezugnahme auf $name. Beispielsweise, country=Netherlands gefolgt von echo $country Gibt den Wert aus. Sie können auch eine Variable basierend auf dem Wert einer anderen Variable festlegen: same_country=$country Der vorhandene Inhalt wird kopiert. Namenskonventionen besagen, dass Ihre Variable mit einem Buchstaben oder Unterstrich beginnen, nur aus Buchstaben, Ziffern und Unterstrichen bestehen und reservierte Schlüsselwörter wie vermeiden sollte. if, then or fi.
Es gibt verschiedene Möglichkeiten, Eingaben in ein Skript einzuspeisen und Ausgaben an anderer Stelle auszugeben. Innerhalb von Skripten read var wartet darauf, dass der Benutzer etwas eingibt, und speichert es. varSie können die Zeilen einer Datei mit einem while read line; do ...; done < filename Schleife. Befehlszeilenargumente werden angezeigt als $1, $2usw., also ein Skript, das ausgibt $1 kann einen in der Befehlszeile übergebenen Namen begrüßen. Für die Ausgabe verwenden Sie echo wie üblich, aber Sie können es umleiten mit > eine Datei überschreiben, >> zum Anhängen oder Kombinieren mit anderen Befehlen mithilfe von Pipes.
Bedingte Logik und Schleifen ermöglichen es Ihren Skripten, Entscheidungen zu treffen und Aufgaben zu wiederholen. Die Grund if Die Syntax in Bash verwendet Klammern wie if [ condition ]; then ... elif [ condition ]; then ... else ... fiSie können numerische Vergleiche durchführen (-gt, -lt, etc.), Zeichenkettenvergleiche, Dateiexistenz und mehr, und Sie können Bedingungen mit einem logischen UND kombinieren (-a) und ODER (-oSchleifen kommen in while Formen, die so lange bestehen bleiben, wie eine Bedingung erfüllt ist, und for Schleifen, die über Listen iterieren, wie for i in {1..5}; do echo $i; done. case Mithilfe von Anweisungen können Sie einen Ausdruck mit einer Reihe von Mustern in einer übersichtlichen, switch-ähnlichen Syntax vergleichen.
Softwareverwaltung mit Paketmanagern
Anders als bei Windows, wo man Installationsprogramme oft von beliebigen Websites herunterlädt, verwalten Linux-Distributionen Software in der Regel über zentrale Repositories und Paketmanager. Ein Paket ist eine Sammlung von Dateien, die die Binärdateien, Bibliotheken, Metadaten und Installationsskripte eines Programms enthält. Pakete liegen entweder als Quellcode (der kompiliert werden muss) oder als architekturspezifische Binärdateien (z. B. x86_64) vor und sind oft von der Installation anderer Pakete abhängig.
Auf Debian-basierten Systemen wie Ubuntu, apt Die Verwendung einer Familie von Tools ist der Standardweg zur Paketverwaltung. Der Paketmanager verwaltet einen Index der verfügbaren Software in den konfigurierten Repositories, den Sie aktualisieren mit sudo apt updateUm ein Paket zu installieren, verwendet man sudo apt install htop oder Ähnliches; alle erforderlichen Abhängigkeiten werden automatisch aus den Repositories geladen. Um bereits installierte Pakete zu aktualisieren, führen Sie Folgendes aus: sudo apt upgradeUm ein nicht mehr benötigtes Paket zu entfernen, verwenden Sie sudo apt remove packagenameDie Verarbeitung von Low-Level-Paketoperationen und -Protokollen erfolgt durch dpkg, deren Protokolle Sie einsehen können unter /var/log/dpkg.log.
Manchmal lädt man eigenständige Dateien herunter. .deb Dateien von Hersteller-Websites anstatt aus den Repositories Ihrer Distribution. In diesem Fall können Sie sie installieren mit sudo dpkg -i package_name.deb aus dem Verzeichnis, in dem sich die Datei befindet. Falls Abhängigkeiten fehlen, können Sie diese in der Regel mit folgendem Befehl beheben: sudo apt -f installUm alle über dpkg installierten Pakete aufzulisten, verwenden Sie dpkg --listGrafische Benutzeroberflächen wie Synaptic bieten Ihnen eine grafische Benutzeroberfläche (GUI) auf Basis desselben zugrundeliegenden Paketverwaltungssystems, falls Sie bei bestimmten Aufgaben lieber klicken als tippen möchten.
Benutzer, Gruppen, Berechtigungen und Sicherheit
Linux ist von Grund auf ein Mehrbenutzersystem, daher ist das Verständnis von Benutzern, Gruppen und Berechtigungen von zentraler Bedeutung für die Sicherheit des Systems. Jedes Konto wird durch einen Benutzernamen (benutzerfreundlich) und eine numerische Benutzer-ID (UID, systemfreundlich) identifiziert. Gruppen haben analog dazu Namen und numerische Gruppen-IDs (GIDs). Für Dienste und Daemons existieren spezielle Konten, und es gibt ein einziges, allmächtiges Superuser-Konto namens „Superuser“. root mit UID 0.
Informationen über Benutzer werden hauptsächlich in /etc/passwdund Passwörter werden (gehasht) gespeichert in /etc/shadow. Eine typische Zeile in /etc/passwd sieht aus wie root:x:0:0:root:/root:/bin/bashDiese Aufschlüsselung umfasst: Benutzername, Passwortplatzhalter, UID, primäre GID, beschreibende Informationen, Home-Verzeichnis und Login-Shell. Gruppeninformationen befinden sich in /etc/group, wobei die Einträge den Gruppennamen, den Passwortplatzhalter, die GID und die Benutzernamen der Mitglieder auflisten.
Jeder Benutzer gehört einer primären Gruppe und optional mehreren sekundären Gruppen an. Die primäre Gruppe wird üblicherweise zusammen mit dem Benutzer erstellt und trägt dessen Namen; vom Benutzer erstellte Dateien gehören normalerweise dieser Gruppe. Ergänzende Gruppen fügen zusätzliche Berechtigungen hinzu – beispielsweise durch Hinzufügen zur Benutzeroberfläche. sudo Gruppen unter Ubuntu ermöglichen es Ihnen, Befehle mit erhöhten Rechten auszuführen. Ihre IDs und Gruppenzugehörigkeiten können Sie mit dem Befehl überprüfen. id Befehl und Liste der einem Benutzer zugeordneten Prozesse über ps -u username.
Dateiberechtigungen in Linux werden im klassischen rwx Tripel für Benutzer, Gruppe und Sonstige. Laufen ls -l zeigt Zeilen wie -rw-rw-r-- or drwxrwx---, wobei das erste Zeichen den Dateityp angibt (- für reguläre Dateien d (für Verzeichnis), und die nächsten neun Zeichen sind drei Sätze von r (lesen), w (schreiben) und x (Ausführen). Das erste Tripel gilt für den Dateibesitzer, das zweite für die Gruppe und das dritte für alle anderen. Bei Verzeichnissen steuert „Ausführen“, ob das Verzeichnis betreten und auf dessen Inhalt zugegriffen werden kann; bei Dateien steuert es, ob die Datei als Programm oder Skript ausgeführt werden kann.
Sie können die Berechtigungen mithilfe der chmod Befehl in symbolischer oder numerischer Form. Der symbolische Modus verwendet Buchstaben für Klassen (u, g, o) und +, -, = um Berechtigungen hinzuzufügen, zu entfernen oder festzulegen, z. B. chmod u+x script.sh um dem Eigentümer die Ausführungsberechtigung hinzuzufügen. Der numerische (oktale) Modus stellt Berechtigungen als Summen von 4 (Lesen), 2 (Schreiben) und 1 (Ausführen) dar, was drei Ziffern für Benutzer, Gruppe und andere ergibt; chmod 751 file Sets rwxr-x--xBeide Stile sind es wert, sich wohlzufühlen.
Eigentümerwechsel werden wie folgt abgewickelt: chown, wodurch der Benutzer, die Gruppe oder beides geändert werden kann. chown newuser filename ändert den Eigentümer, chown newuser:newgroup filename passt sowohl den Eigentümer als auch die Gruppe an, und chown :groupname dir Es ändert sich lediglich die Gruppe. -R Die Option wendet Besitzänderungen rekursiv auf alle Dateien und Verzeichnisse innerhalb eines angegebenen Verzeichnisses an, was nützlich ist, um Anwendungsstrukturen oder freigegebene Ordner vorzubereiten.
Der Identitätswechsel erfolgt mit su und sudoUnd Sie sollten wissen, wann Sie welches Werkzeug verwenden. su otheruser startet eine Shell als otheruser nachdem Sie das Passwort dieses Benutzers eingegeben haben; su - öffnet eine vollständige Login-Shell und aktualisiert die Umgebungsvariablen. sudo ist sicherer für alltägliche Verwaltungsaufgaben: Es ermöglicht autorisierten Benutzern, einzelne Befehle mit erhöhten Berechtigungen auszuführen und dabei alles zu protokollieren. /var/log/auth.logWenn ein Benutzer nicht berechtigt ist, sudoVersuche werden protokolliert und zurückgewiesen.
Die Benutzerverwaltung über die Kommandozeile erfolgt mithilfe von Tools wie useradd, usermod, userdel und passwd. sudo useradd username erstellt ein neues Konto (obwohl Sie oft höherwertige Wrapper bevorzugen werden, die auch Home-Verzeichnisse erstellen und standardmäßig Shells festlegen). usermod Ermöglicht das Ändern von Benutzernamen, Home-Verzeichnissen, Shells, Gruppenmitgliedschaften und mehr. userdel entfernt Konten, mit -r Sie löschten auch ihre Home-Verzeichnisse. passwd Setzt oder ändert Passwörter – führen Sie es als Root mit einem Benutzernamen aus, um das Passwort einer anderen Person festzulegen, oder ohne Argumente, um Ihr eigenes zu ändern.
Remote-Verbindung mit SSH
Secure Shell (SSH) ist die Standardmethode, um sich sicher über das Netzwerk in entfernte Linux-Systeme einzuloggen. Es verwendet Verschlüsselung, Public-Key-Kryptografie und starke Authentifizierung, um Ihren Datenverkehr zu schützen. Der Standardport ist 22, viele Administratoren ändern ihn jedoch, um Störungen durch automatisierte Scans zu reduzieren. Auf Clientseite ist das Kerntool einfach ssh.
Um eine Verbindung zu einem Remote-Server herzustellen, benötigen Sie die IP-Adresse oder den Hostnamen des Servers, einen Benutzernamen und in der Regel ein Passwort oder einen Schlüssel. Das Befehlsformat ist ssh username@server_ipBeispielsweise ssh john@192.168.1.10Beim ersten Verbindungsaufbau werden Sie von SSH aufgefordert, den Host-Key-Fingerabdruck des Servers zu bestätigen. Danach werden Sie nach Ihrem Benutzerpasswort gefragt (sofern Sie keine schlüsselbasierte Authentifizierung verwenden). Nach der Anmeldung befinden Sie sich an der Shell-Eingabeaufforderung des Remote-Rechners und können Befehle ausführen, als säßen Sie direkt an dessen Konsole.
Wenn der SSH-Dienst auf einem nicht standardmäßigen Port lauscht, geben Sie diesen mit dem -p . Wenn Ihr Server beispielsweise Port 2222 für SSH verwendet, würden Sie sich mit folgendem verbinden: ssh -p 2222 username@server_ipSie können auch Host-Aliase und Standardports konfigurieren in ~/.ssh/config um nicht jedes Mal die vollständigen Details eintippen zu müssen.
Analyse von Protokollen und Textdaten
In einem laufenden System sind Protokolle wie eine Blackbox: Sie zeigen Ihnen, was wann und oft auch warum passiert ist. Anwendungs-, System-, Sicherheits- und Netzwerkprotokolle können Tausende oder Millionen von Zeilen umfassen, daher benötigen Sie effiziente Methoden zum Durchsuchen, Filtern und Zusammenfassen. Glücklicherweise bietet die Unix-Toolbox mehrere sich ergänzende Textverarbeitungswerkzeuge, die hier ihre Stärken ausspielen.
grep ist Ihr Hilfsmittel, um Zeilen zu finden, die einem Muster in Dateien oder Datenströmen entsprechen. Die grundlegende Verwendung ist grep "search_string" filenameAber die verschiedenen Optionen machen es deutlich flexibler: -r durchsucht Verzeichnisse rekursiv, -i Groß-/Kleinschreibung wird ignoriert -n zeigt Zeilennummern an, -c Zählt übereinstimmende Zeilen, -v Kehrt die Übereinstimmung um (zeigt nicht übereinstimmende Zeilen an), und -w Beschränkt die Treffer auf ganze Wörter. grep -l Es werden nur Dateinamen aufgelistet, die eine Übereinstimmung enthalten, was praktisch ist, wenn man viele Dateien gleichzeitig scannt.
sed (Der Stream-Editor) verarbeitet Text Zeile für Zeile und wendet Befehle wie Ersetzen, Löschen und Drucken an. Ein klassisches Beispiel für Substitution ist sed 's/old-text/new-text/' file, welches das erste Vorkommen von ersetzt old-text in jeder Zeile mit new-text. Hinzufügen von a g Mit dem Flag wird die Änderung zeilenweise global festgelegt. -n '/pattern/p'Sie können nur Zeilen drucken, die einem Muster entsprechen, und mit '/pattern/d' Sie können übereinstimmende Zeilen aus der Ausgabe entfernen. Reguläre Ausdrücke ermöglichen es Ihnen, gezielt Teile von Protokollzeilen wie Datumsangaben, IDs oder Statuscodes zu extrahieren oder zu transformieren.
awk ist eine kleine Sprache zur Bearbeitung strukturierter Texte, insbesondere spaltenbasierter Daten wie Protokolle. Seine Grundform ist awk 'pattern { action }' file, wobei jede Eingabezeile automatisch in Felder aufgeteilt wird $1, $2usw., wobei Leerzeichen als Standardtrennzeichen verwendet werden (konfigurierbar mit -FSie könnten verwenden awk '{ print $1, $2 }' logfile Datum und Uhrzeit drucken, oder awk '/ERROR/ { print $0 }' Um nur Fehlerzeilen anzuzeigen. Erweiterte Muster ermöglichen das Erstellen von Häufigkeitstabellen, das Berechnen von Aggregaten und das Zusammenfassen von Kennzahlen in Echtzeit.
cut, sort und uniq Nutzen Sie dieses Werkzeug, um spezifische Informationen zu extrahieren und zusammenzuführen. cut Extrahiert bestimmte Felder anhand eines Trennzeichens und der Feldnummern, wie zum Beispiel cut -d ' ' -f 3 logfile um die dritte Spalte zu erhalten. sort ordnet Zeilen alphabetisch oder numerisch, mit -n für numerische Sortierung -r für umgekehrte Reihenfolge und -k einen Sortierschlüssel auswählen. uniq werden aufeinanderfolgende doppelte Zeilen zusammengefasst, und mit -c Es zählt sie. Sie miteinander verbinden – zum Beispiel cut -d ' ' -f 3 logfile | sort | uniq -c – ist ein klassisches Muster, um die Anzahl von Protokollierungsstufen oder Fehlercodes zu ermitteln.
Prozesse, Jobs und Signale
Jeder Befehl, den Sie unter Linux ausführen, ist ein Prozess, und zu wissen, wie man Prozesse untersucht, priorisiert und beendet, ist für die Systemadministration von entscheidender Bedeutung. Jeder Prozess erhält eine numerische Prozess-ID (PID) und eine übergeordnete Prozess-ID (PPID), und die meisten Prozesse lassen sich letztendlich auf einen übergeordneten Prozess zurückführen. systemd oder ein anderes Init-System mit der PID 1. Prozesse verbrauchen CPU, Speicher und andere Ressourcen und durchlaufen Zustände wie laufend, schlafend, gestoppt und Zombie.
Das ps Der Befehl liefert Ihnen Momentaufnahmen des laufenden Prozesses; der übliche ps aux Das Formular ist besonders praktisch. Es zeigt den Benutzer, die Prozess-ID (PID), die CPU- und Speicherauslastung, die Größe des virtuellen und residenten Speichers, das steuernde Terminal, den Status, die Startzeit, die CPU-Zeit und den Befehl, mit dem der Prozess gestartet wurde. STAT Spalte kodiert den Zustand: R zum Laufen S und I zum Schlafen D für ununterbrochenen Schlaf (üblicherweise I/O), T für gestoppt und Z für Zombie-Prozesse, die darauf warten, von ihrem Elternprozess geerntet zu werden.
Shell-„Jobs“ sind Prozesse, die Sie von der aktuellen Shell aus gestartet haben und die Sie zwischen Vordergrund und Hintergrund verschieben können. Anhängen & zu einem Befehl, wie sleep 300 &startet es sofort im Hintergrund. jobs Der Befehl listet sie mit Auftragsnummern auf, wie zum Beispiel [1], [2]usw. Sie können einen Auftrag in den Vordergrund bringen mit fg %1, suspendieren Sie es mit Ctrl+Zund setzen Sie es im Hintergrund fort mit bg %1Dies ist besonders nützlich, wenn Sie lange Aufgaben ausführen, während Sie dasselbe Terminal weiterhin für andere Befehle verwenden.
Um Prozesse direkt zu beenden oder zu steuern, verwendet man Signale über Befehle wie kill, killall und pkill. kill PID sendet SIGTERM Standardmäßig wird der Prozess höflich zum Beenden aufgefordert. kill -9 PID sendet SIGKILL, wodurch es ohne Reinigung zwangsweise abgetötet wird. Weitere häufige Anzeichen sind: SIGHUP (wird häufig verwendet, um Konfigurationen neu zu laden), SIGINT (ähnlich wie Ctrl+C), SIGSTOP (Pause) und SIGCONT (wieder aufnehmen). killall processname und pkill pattern Sie können damit alle Prozesse entweder anhand ihres Namens oder anhand eines regulären Ausdrucksmusters ansprechen.
Eingabe, Ausgabe, Umleitung und Pipelines
Jeder Prozess beginnt mit drei Standard-Datenströmen: Standardeingabe (stdin), Standardausgabe (stdout) und Standardfehlerausgabe (stderr). Unter Linux entsprechen diese den Dateideskriptoren 0, 1 und 2. Standardmäßig ist stdin die Tastatur, und stdout und stderr werden an das Terminal gesendet. Sie können diese jedoch mithilfe einfacher Operatoren an Dateien oder andere Prozesse umleiten.
Die Umleitung ermöglicht es Ihnen, Ausgabe- oder Fehlermeldungen in Dateien zu erfassen oder diese miteinander zu vermischen. Die Verwendung von > überschreibt eine Datei mit stdout (z.B. ls > files.txt), während >> Es fügt Daten an, anstatt sie zu überschreiben. Sie können stderr separat umleiten mit 2> error.txtUm sowohl stdout als auch stderr in dieselbe Datei zu schreiben, können Sie Folgendes tun: command > all_output.txt 2>&1, was bedeutet „sende stdout an all_output.txt und dann stderr an die Stelle senden, an die stdout aktuell gesendet wird.“
Pipelines verbinden Befehle so, dass die Ausgabe des einen Befehls zur Eingabe des nächsten wird. Der Rohrbediener | ist der Klebstoff: ls | grep image listet Dateien auf und filtert dann nach solchen, die Folgendes enthalten image In ihren Namen liegt es bereits. Diese Kompositionsfähigkeit ist ein zentraler Bestandteil der Unix-Philosophie: Anstatt eines einzigen großen Werkzeugs verknüpft man viele kleine Werkzeuge, um komplexe Probleme zu lösen.
Terminplanung und Automatisierung mit Cron
Für wiederkehrende Aufgaben – Datensicherungen, Bereinigungen, Berichte, Systemprüfungen – ist Cron der integrierte Jobplaner, der dafür sorgt, dass alles automatisch abläuft. Ein Hintergrunddämon (crond (oder eine gleichwertige Funktion) liest benutzer- und systemweite Crontab-Dateien und führt die angegebenen Befehle zu festgelegten Zeiten aus. Jeder Benutzer kann seine eigene Crontab definieren, und der Zugriff kann über die Crontab-Verwaltung gesteuert werden. /etc/cron.allow und /etc/cron.d/cron.deny auf vielen Systemen.
Sie bearbeiten Ihre Crontab mit crontab -e und die aktuellen Einträge auflisten mit crontab -l. Jede Zeile in einer Crontab enthält fünf Zeitangaben (Minute, Stunde, Tag des Monats, Monat, Wochentag), gefolgt vom auszuführenden Befehl. Sternchen dienen als Platzhalter, Bereiche und Listen sind zulässig, ebenso wie Schrittwerte wie … */5 bedeutet „alle 5 Einheiten“. Zum Beispiel: 0 22 * * 1-5 findet montags bis freitags um 22:00 Uhr statt, und */1 * * * * läuft jede Minute.
Ein einfaches Beispiel: Sie könnten ein Skript einplanen, das einmal pro Minute Datum und Uhrzeit in einer Datei protokolliert. Das Drehbuch könnte sein date-script.sh mit einem Shebang und echo $(date) >> /path/to/date-out.txtNachdem Sie es ausführbar gemacht haben, fügen Sie einen Cron-Eintrag hinzu, etwa so: */1 * * * * /bin/sh /home/username/date-script.sh. Im Laufe der Zeit, date-out.txt wird mit zeitgestempelten Zeilen gefüllt, sodass Sie überprüfen können, ob der Cronjob planmäßig ausgeführt wird.
Die Fehlersuche bei Cronjobs umfasst üblicherweise die Überprüfung von Zeitplänen, die Kontrolle von Protokollen und die Erfassung der Ausgabe. Überprüfen Sie zunächst die Zeitangaben mithilfe einer Hilfsseite wie crontab.guru, falls erforderlich. Untersuchen Sie anschließend die Systemprotokolle (zum Beispiel …). /var/log/syslog (unter Ubuntu) nach Einträgen suchen, die CRON und Ihren Befehl erwähnen. Sie können die Standardausgabe (stdout) und Standardfehlerausgabe (stderr) eines Cron-Jobs auch mit folgender Syntax in eine Protokolldatei umleiten: * * * * * sh /path/to/script.sh &> /path/to/log_file.log um Fehler aufzuspüren, die sonst unbemerkt bleiben würden.
Grundlagen der Netzwerktechnik unter Linux
Linux bietet eine umfangreiche Sammlung von Netzwerktools zur Untersuchung von Schnittstellen, Verbindungen, Routing und Konnektivität. Traditionelle Versorgungsunternehmen wie ifconfig und netstat werden immer noch häufig verwendet, obwohl moderne Ersatzstoffe wie die ip Suite und ss Es gibt sie auch. Sie werden sie verwenden, wenn Sie IP-Adressen ermitteln, die Erreichbarkeit testen oder ungewöhnliches Netzwerkverhalten debuggen.
ifconfig (oder ip addr) listet Netzwerkschnittstellen und deren Konfiguration auf. Sie sehen Einträge für physische Schnittstellen (wie eth0 or wlp3s0), Rückschleife (lo) und möglicherweise virtuelle Brücken. Zu den Feldern gehören IPv4- und IPv6-Adressen, Netzmasken, Broadcast-Adressen, MAC-Adressen und Statistiken zu gesendeten/empfangenen Paketen und Fehlern.
netstat Meldet aktive Verbindungen, Listening Sockets, Routing-Tabellen und Statistiken pro Protokoll. Optionen wie -a Alle Steckdosen anzeigen, -l zeigt nur die Abhörports an, -t zeigt TCP-Verbindungen an -u zeigt UDP an -r Gibt die Kernel-Routingtabelle aus, und -p fügt jeder Verbindungsliste die PID/den Programmnamen hinzu, was sehr hilfreich ist, um herauszufinden, welcher Prozess an welchen Port gebunden ist.
Einfache Erreichbarkeitstests werden häufig durchgeführt mit ping, das ICMP-Echo-Anfragen an einen Host sendet. ping google.com zeigt die Umlaufzeiten und Paketverluste an, bis Sie den Vorgang stoppen. Ctrl+CDie Zusammenfassung am Ende gibt Auskunft darüber, wie viele Pakete gesendet und empfangen wurden und welcher Prozentsatz verloren ging. Dies hilft Ihnen, instabile Verbindungen oder DNS-Probleme zu erkennen.
curl ist ein weiteres unverzichtbares Werkzeug, diesmal für die Interaktion mit HTTP(S) und anderen Protokollen über URLs. Standardmäßig curl URL sendet eine GET-Anfrage und gibt den Antworttext aus. Mit -oSie können das Ergebnis in einer Datei speichern; mit -ISie fordern lediglich die Header an, was sich hervorragend eignet, um Antwortcodes und Servermetadaten zu überprüfen. Dies ist besonders praktisch für das schnelle Testen von HTTP-APIs oder Remote-Endpunkten über die Kommandozeile.
Überwachung und Fehlerbehebung von Linux-Systemen
Professionelles Arbeiten mit Linux beinhaltet stets Überwachung und Fehlerbehebung: Engpässe frühzeitig erkennen und Probleme schnell diagnostizieren. Dabei kommen viele der bereits erwähnten Tools sowie einige Spezialwerkzeuge zum Einsatz, um CPU-Auslastung, Speichernutzung, Festplattennutzung, Prozessverhalten und Netzwerkstatus zu analysieren.
uptime bietet Ihnen einen schnellen Überblick darüber, wie lange das System bereits läuft und wie die durchschnittliche Systemlast aussieht. Die drei Zahlen am Ende stellen die durchschnittlichen Warteschlangenlängen der letzten 1, 5 und 15 Minuten dar. Wenn Sie diese durch die Anzahl der CPUs teilen (die Sie über … einsehen können), erhalten Sie … lscpuMan erhält dadurch einen Eindruck von der Auslastung der einzelnen Kerne. Konstant hohe Lastdurchschnitte im Verhältnis zur Anzahl der CPUs deuten in der Regel auf eine CPU-Sättigung oder blockierte Prozesse hin, die auf E/A warten.
Speicher- und Festplattennutzung lassen sich leicht überprüfen mit free und df. free -mh Die Meldungen umfassen den gesamten, belegten und verfügbaren Speicher sowie den Auslagerungsspeicher in lesbaren Einheiten. Es ist normal, dass Linux viel Speicher für Cache und Puffer verwendet. Konzentrieren Sie sich daher auf den Wert für „verfügbar“ und die Auslagerungsspeichernutzung. df -h Zeigt Speicherplatz und Auslastung für jedes eingebundene Dateisystem an; als Faustregel gilt, dass eine Auslastung unter ca. 80 % einige Leistungs- und Fragmentierungsprobleme vermeidet.
Prozessbezogene Einblicke in Echtzeit sind der Punkt, an dem top und verwandte Werkzeuge glänzen. Laufen top Zeigt eine dynamische, sich aktualisierende Ansicht der CPU-, Speicher- und Prozessstatistiken. Sie können nach verschiedenen Spalten sortieren, nach Prozessen suchen und sogar einen Prozess durch Drücken einer bestimmten Taste beenden. k und die Eingabe der PID. Fortgeschrittenere Varianten wie htop Sie bieten Farbe, Mausunterstützung und einfachere Navigation, aber die Kernkonzepte bleiben dieselben.
Die Netzwerkgesundheit hängt oft von Ports, Verbindungen und Paketverlusten ab. Tools wie netstat (oder ss) zeigen Sie an, welche Ports sich in LISTEN, ESTABLISHED, TIME_WAIT und andere TCP-Zustände, mit denen Sie eine Erschöpfung der Ports oder ein unkontrolliertes Anwachsen der Verbindungen erkennen können. ping Hilft bei der Erkennung von Paketverlusten und Latenzspitzen. Für eine detailliertere Analyse auf Paketebene, tcpdump kann den Datenverkehr erfassen .pcap Dateien zur späteren Analyse in Wireshark.
Für historische Leistungsdaten, sar Befehl (von der sysstat Das Paket ist unglaublich nützlich. Sobald sysstat Wenn das System installiert und aktiviert ist, protokolliert es regelmäßig CPU-, Speicher-, Netzwerk- und Festplattenstatistiken in Dateien. /var/log/sysstatSie können diese Protokolle später abfragen mit sar -u für die CPU-Auslastung sar -r zum Speichern sar -S zum Tausch sar -d für Blockgeräte oder sar -n DEV für Netzwerkschnittstellen, die Intervalle und Zähler angeben oder direkt auf tägliche Archive verweisen, wie z. B. sa04 für einen bestimmten Tag des Monats.
Denken Sie schließlich immer daran, dass Protokolle Ihre Aufzeichnung dessen sind, was das System zum Zeitpunkt des Auftretens eines Problems getan hat. Vor dem Neustart von Diensten oder Servern sollten Sie relevante Protokolle kopieren oder als Snapshot speichern, um wichtige Informationen nicht zu verlieren. Ergänzend dazu können Sie Metriken von Tools wie … verwenden. sar, top und freeSie helfen Ihnen, die Ursachen von Problemen zu ermitteln, die Zuverlässigkeit zu verbessern und wiederkehrende Vorfälle zu vermeiden. Mit der Zeit verwandelt Sie dieser Feedback-Kreislauf von „Ich kann einer Anleitung folgen“ zu „Ich kann Produktionssysteme souverän betreiben“.