Einführung
Der tee-Befehl in Linux ist ein leistungsstarkes Werkzeug, das es Ihnen ermöglicht, die Befehlsausgabe im Terminal anzuzeigen und gleichzeitig in einer Datei zu speichern. Diese Funktionalität ist besonders nützlich für Systemadministratoren und Entwickler, die die Ausgabe in Echtzeit überprüfen und für eine spätere Analyse aufbewahren müssen.
In diesem Lab werden Sie die Grundlagen der Ausgabe-Multiplexing mit dem tee-Befehl kennenlernen. Sie werden lernen, wie Sie die Ausgabe anzeigen und gleichzeitig speichern, die Standardfehler umleiten und die Ausgabe an bestehende Dateien anhängen. Diese Fähigkeiten sind für eine effektive Protokollverwaltung, Fehlersuche und Systemüberwachung in Linux-Umgebungen unerlässlich.
Grundlagen des tee-Befehls verstehen
Der tee-Befehl in Linux nimmt seinen Namen von der T-förmigen Rohrverbindung in der Sanitärinstallation, die den Wasserfluss in zwei Richtungen aufteilt. Ähnlich teilt der tee-Befehl die Ausgabe eines Befehls in zwei Richtungen auf: an das Terminal und in eine Datei.
Beginnen wir damit, in unser Arbeitsverzeichnis zu navigieren:
cd /home/labex/project
Erstellen einer Testdatei
Zunächst erstellen wir eine einfache Textdatei, die wir für unsere Experimente verwenden können:
echo "Hello, World" > hello.txt
Dieser Befehl erstellt eine Datei namens hello.txt, die den Text "Hello, World" enthält.
Verwenden des tee-Befehls
Nun verwenden wir den tee-Befehl, um den Inhalt von hello.txt im Terminal anzuzeigen und ihn gleichzeitig in eine andere Datei zu kopieren:
cat hello.txt | tee copy.txt
Sie sollten die folgende Ausgabe in Ihrem Terminal sehen:
Hello, World
Der Teil cat hello.txt liest den Inhalt der Datei hello.txt. Das Pipe-Symbol | nimmt diese Ausgabe und sendet sie an den tee-Befehl. Der tee-Befehl zeigt dann den Text im Terminal an und schreibt ihn gleichzeitig in die Datei copy.txt.
Lassen Sie uns überprüfen, ob der Inhalt tatsächlich in copy.txt kopiert wurde:
cat copy.txt
Sie sollten die gleiche Ausgabe sehen:
Hello, World
Verständnis der Befehlsstruktur
Die grundlegende Syntax des tee-Befehls lautet:
command | tee filename
Dabei gilt:
commandist ein beliebiger Befehl, der eine Ausgabe erzeugt|(Pipe) sendet die Ausgabe des Befehls anteeteeist der Befehl selbstfilenameist der Name der Datei, in der die Ausgabe gespeichert wird
Umleiten von Standardfehlern mit tee
In Linux können Programme Informationen über zwei Hauptkanäle ausgeben:
- Standardausgabe (stdout): Normale Programmausgabe
- Standardfehler (stderr): Fehlermeldungen und Diagnosen
Standardmäßig erfasst der tee-Befehl nur die Standardausgabe. In vielen Situationen möchten Sie jedoch auch die Fehlermeldungen erfassen. Hier kommt die Ausgabeumleitung ins Spiel.
Verständnis der Standardfehlerumleitung
Erstellen wir ein Skript, das sowohl Standardausgabe als auch Standardfehler ausgibt. Navigieren Sie zunächst in das Projektverzeichnis (falls Sie nicht bereits dort sind):
cd /home/labex/project
Jetzt führen wir einen Befehl aus, der sowohl Standardausgabe als auch Standardfehler erzeugt:
echo "This is standard output"
ls /nonexistentfile
Sie sollten eine Ausgabe ähnlich der folgenden sehen:
This is standard output
ls: cannot access '/nonexistentfile': No such file or directory
Beachten Sie, dass die Fehlermeldung des ls-Befehls direkt an das Terminal geht.
Umleiten von Standardfehlern in eine Datei
Schauen wir uns zunächst an, wie wir nur die Fehlerausgabe in eine Datei umleiten können:
echo "This is standard output"
ls /nonexistentfile 2> error.log
Diesmal sollten Sie nur sehen:
This is standard output
Die Fehlermeldung wurde in die Datei error.log umgeleitet. Die Syntax 2> teilt der Shell mit, die Standardfehler (Dateideskriptor 2) in die angegebene Datei umzuleiten.
Lassen Sie uns den Inhalt von error.log überprüfen:
cat error.log
Sie sollten sehen:
ls: cannot access '/nonexistentfile': No such file or directory
Erfassen von Ausgabe und Fehler mit tee
Nun verwenden wir tee, um sowohl die Standardausgabe als auch die Standardfehler in einer Datei zu erfassen und sie gleichzeitig im Terminal anzuzeigen:
{
echo "This is standard output"
ls /nonexistentfile
} 2>&1 | tee both.log
Sie sollten sowohl die Ausgabe als auch den Fehler im Terminal sehen:
This is standard output
ls: cannot access '/nonexistentfile': No such file or directory
Lassen Sie uns den Inhalt von both.log überprüfen:
cat both.log
Sie sollten die gleiche Ausgabe sehen:
This is standard output
ls: cannot access '/nonexistentfile': No such file or directory
Verständnis der Befehlsstruktur
Im Befehl 2>&1 | tee both.log:
{ ... }gruppiert mehrere Befehle zusammen2>&1leitet die Standardfehler (Dateideskriptor 2) an die Standardausgabe (Dateideskriptor 1) um|leitet die kombinierte Ausgabe an dentee-Befehl weitertee both.logzeigt die Ausgabe im Terminal an und schreibt sie inboth.log
Diese Technik ist besonders nützlich für die Protokollierung von Befehlsausgaben während der Systemwartung oder der Fehlerbehebung.
Anhängen von Ausgabe mit tee
Standardmäßig überschreibt der tee-Befehl die Zieldatei jedes Mal, wenn er verwendet wird. In vielen Szenarien möchten Sie jedoch neue Informationen an eine vorhandene Datei anhängen, anstatt deren Inhalt zu ersetzen. Hier kommt die Option -a (append, anhängen) zum Einsatz.
Verständnis der Anhängeoption
Navigieren Sie in das Projektverzeichnis, falls Sie nicht bereits dort sind:
cd /home/labex/project
Erstellen wir zunächst eine Datei mit Systeminformationen:
uname -a | tee system_info.log
Dieser Befehl zeigt Ihre Systeminformationen im Terminal an und speichert sie in system_info.log. Die Ausgabe sieht in etwa so aus (Ihre Ausgabe kann abweichen):
Linux ubuntu 5.15.0-1031-aws #35-Ubuntu SMP Fri Feb 10 02:14:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Jetzt überprüfen wir den Inhalt der Datei:
cat system_info.log
Sie sollten die gleichen Systeminformationen sehen.
Anhängen von Informationen an die Datei
Jetzt fügen wir mithilfe der Option -a weitere Informationen an diese Datei an:
echo "Date and time: $(date)" | tee -a system_info.log
Dies wird etwas wie Folgendes anzeigen:
Date and time: Wed May 3 14:22:34 UTC 2023
Das Flag -a teilt tee mit, die Ausgabe an die Datei anzuhängen, anstatt sie zu überschreiben.
Lassen Sie uns erneut den Inhalt der Datei überprüfen:
cat system_info.log
Sie sollten jetzt sowohl die Systeminformationen als auch das Datum sehen:
Linux ubuntu 5.15.0-1031-aws #35-Ubuntu SMP Fri Feb 10 02:14:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Date and time: Wed May 3 14:22:34 UTC 2023
Hinzufügen weiterer Informationen
Fügen wir noch mehr Informationen zu unserer Protokolldatei hinzu:
echo "Disk usage:" | tee -a system_info.log
df -h | tee -a system_info.log
Dies wird Informationen zur Datenträgerauslastung anzeigen und sie an unsere Protokolldatei anhängen. Die Ausgabe variiert je nach Ihrem System, aber sie könnte in etwa so aussehen:
Disk usage:
Filesystem Size Used Avail Use% Mounted on
/dev/root 19G 5.8G 13G 32% /
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 198M 1.1M 197M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 105M 5.2M 100M 5% /boot/efi
tmpfs 100M 4.0K 100M 1% /run/user/1000
Lassen Sie uns erneut den Inhalt unserer Protokolldatei überprüfen:
cat system_info.log
Sie sollten jetzt alle Informationen sehen, die wir hinzugefügt haben:
Linux ubuntu 5.15.0-1031-aws #35-Ubuntu SMP Fri Feb 10 02:14:02 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux
Date and time: Wed May 3 14:22:34 UTC 2023
Disk usage:
Filesystem Size Used Avail Use% Mounted on
/dev/root 19G 5.8G 13G 32% /
tmpfs 494M 0 494M 0% /dev/shm
tmpfs 198M 1.1M 197M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda15 105M 5.2M 100M 5% /boot/efi
tmpfs 100M 4.0K 100M 1% /run/user/1000
Verständnis der Befehlsstruktur
Die Syntax für das Anhängen mit tee lautet:
command | tee -a filename
Dabei gilt:
commandist ein beliebiger Befehl, der eine Ausgabe erzeugt|(Pipe) sendet die Ausgabe des Befehls anteeteeist der Befehl selbst-aist die Option, um die Ausgabe an die Datei anzuhängen, anstatt sie zu überschreibenfilenameist der Name der Datei, an die die Ausgabe angehängt wird
Dieser Ansatz ist besonders nützlich für:
- Die schrittweise Erstellung von Protokolldateien
- Das Erfassen der Ausgabe mehrerer Befehle in einer einzigen Datei
- Das Aufrechterhalten eines Datensatzes über Systemzustände oder -operationen
Zusammenfassung
In diesem Lab haben Sie gelernt, wie Sie den tee-Befehl für die Ausgabe-Multiplexing in Linux verwenden. Diese leistungsstarke Utility ermöglicht es Ihnen, die Befehlsausgabe im Terminal anzuzeigen und gleichzeitig in Dateien zu speichern, was sie zu einem unverzichtbaren Werkzeug für Systemadministratoren und Entwickler macht.
Hier sind die wichtigsten Fähigkeiten, die Sie erworben haben:
Grundlegende Verwendung von tee: Sie haben gelernt, wie Sie
teeverwenden, um die Ausgabe im Terminal anzuzeigen und gleichzeitig in einer Datei zu speichern.Umleiten von Standardfehlern: Sie haben gelernt, wie Sie sowohl die Standardausgabe als auch die Standardfehler mithilfe der Umleitung
2>&1in Kombination mitteeerfassen können, was für umfassende Protokollierung von entscheidender Bedeutung ist.Anhängen von Ausgabe: Sie haben entdeckt, wie Sie die Option
-amitteeverwenden, um die Ausgabe an vorhandene Dateien anzuhängen, anstatt sie zu überschreiben. Dies ermöglicht es Ihnen, Protokolle schrittweise aufzubauen.
Diese Techniken sind für verschiedene Aufgaben in Linux von großem Wert, darunter:
- Das Erstellen detaillierter Protokolle für die Fehlersuche
- Die Überwachung von Systemaktivitäten
- Die Dokumentation von Befehlsausgaben während der Systemadministration
- Das Aufbewahren von Befehlsergebnissen für die zukünftige Referenz
Das Verständnis, wie man die Ausgabe in Linux effektiv verwaltet, ist eine grundlegende Fähigkeit, die Ihnen bei Ihrem weiteren Weg mit Linux-Systemen gut dienen wird.



