In diesem Tutorial befassen wir uns mit dem Befehl Linux Strace und demonstrieren einige Beispielanwendungen.
Grundlegende Befehlssyntax
Der Befehl Strace nimmt die folgende Syntax an:
$ Strace Optionsbefehl
So installieren Sie den Befehl Linux Strace
Die meisten modernen Linux -Verteilungen werden standardmäßig mit Strace Utility versandt. Wenn Strace jedoch aus irgendeinem Grund nicht in Ihrem System installiert ist, befolgen Sie die folgenden Schritte, um es zu installieren.
Auf Debian / Ubuntu
Wenn Sie Debian / Ubuntu-basierte Systeme ausführen, führen Sie aus:
$ sudo Apt installieren Sie Strace
Auf rhel / centos
$ sudo yum install Strace
Um zu überprüfen, ob Strace installiert ist, können Sie die Version wie gezeigt überprüfen.
$ strace -Verssion
Schauen wir uns nun ein paar Beispielnutzungen an.
Basic Strace -Befehl
In seinem grundlegendsten Format verfolgt und zeigt der Befehl Strace Systemanrufe, die Argumente (in quadratische Klammern oder Klammern eingeschlossen) und den ausführbaren Anruf.
Im folgenden Beispiel können wir die Argumente des Ausführens des Skripts sehen Hallo.Sch, Rufen Sie in Klammern in der ersten Zeile an.
$ strace ./Hallo.Sch
In der allerletzten Zeile sehen Sie den Exit -Status des Befehls in diesem Fall 0. Dies impliziert, dass der Befehl ohne Fehler erfolgreich ausgeführt wurde. Ein Exit -Code von -1 bedeutet, dass während der Ausführung ein Fehler aufgetreten ist.
Zählen Sie die Systemaufrufe
Wenn Sie die Anzahl der Systemanrufe erhalten möchten, verwenden Sie die -C Option für die Zählung wie gezeigt.
$ strace -c ./Hallo.Sch
Aus der obigen Ausgabe können Sie die Anzahl der getätigten Systemanrufe sehen, einschließlich der Tätigkeit der Anrufe.
Zeigen Sie bestimmte Systemaufrufe mit Strace an
Darüber hinaus können Sie die Art von Systemanrufen mit Strace mit dem sehen -e Option, gefolgt von der Art des Systemaufrufs. In dem gezeigten Ausschnitt haben wir die Schreib- und Lesesystemaufrufe angezeigt.
$ strace -e Trace = schreiben ./Hallo.Sch
$ strace -e Trace = lesen ./Hallo.Sch
Trace -Netzwerksystemanrufe
Sie können Strace auf das Anzeigen von Netzwerksystemanrufen beschränken, indem Sie den Anruftyp angeben. Hier. Trace = Netzwerk Gibt an, dass wir beabsichtigen, den Netzwerkanruf des Netzwerkbefehls zu erhalten Ping 8.8.8.8 -c 4.
$ strace -e Trace = Netzwerkping 8.8.8.8 -c 4
Trace -Signalsystemaufrufe
Verwenden Sie für systembezogene Anrufe das Argument, wie im folgenden Befehl angegeben. Der Befehl druckt den Signalanrufer für die aus Ping 8.8.8.8 -c 4 Befehl.
$ strace -e Trace = Signal Ping 8.8.8.8 -c 4
Drucken des Zeitstempels jedes Systemaufrufs
Verwenden Sie den Zeitstempel für jeden Systemaufruf, um den Zeitaufruf zu extrahieren -R Option, wie im folgenden Befehl gezeigt.
$ strace -r ping 8.8.8.8 -c 4
Wie Sie sehen können, wird für jeden Systemaufruf ein relativer Zeitstempel gedruckt. Der Zeitunterschied zwischen aufeinanderfolgenden Systemaufrufen wird erfasst und aufgezeichnet.
Zeigen Sie die Dauer an, die für Systemanrufe aufgewendet wird
Darüber hinaus können Sie die Zeitdauer der für jeden Systemaufruf mit dem Aufruf ausgegebenen Zeit ausdrucken -T Option wie gezeigt. Die verbrauchte Zeit wird in der allerletzten Spalte wie angegeben angegeben.
$ strace -t ping 8.8.8.8 -c 4
Zeigen Sie die genaue Zeit jedes Systemaufrufs an
Um die tatsächliche oder genaue Zeit der Systemaufrufe zu drucken, rufen Sie die auf -T Option wie gezeigt. Die Zeit in Echtzeit oder Wandtakt wird in der ersten Spalte gedruckt.
$ strace -t ./Hallo.Sch
Zeigen Sie den Befehlszeiger für jeden Anruf an
Verwenden Sie den Anweisungszeiger für jeden Systemaufruf, um die -ich Möglichkeit.
$ strace -i ./Hallo.Sch
Speichern Sie die Ausgabe von Systemaufrufen in einer Textdatei
Schließlich gibt der Befehl Strace Ihnen die Möglichkeit, die Ausgabe in einer Textdatei zu speichern, wie gezeigt.
$ strace -o sample_output.txt ./Hallo.Sch
Hier, sample_output.txt ist die Ausgabedatei, während ./Hallo.Sch ist der Befehl, dessen Systeme wir nachverfolgen.
Einpacken
Der Befehl Strace ist ein praktisches und leistungsstarkes Dienstprogramm für Befehlszeilen, mit dem Debug-Anwendungen, Befehle und Prozesse debuggen, insbesondere wenn Sie nicht den Quellcode zur Verfügung haben. Es ist das Tool der Wahl für Softwareentwickler und Systemadministratoren.