So verwenden Sie Strace unter Linux

So verwenden Sie Strace unter Linux
Wenn Sie mit Linux -Systemen arbeiten, müssen Sie häufig die durch Prozesse ausgeführten Aktionen und die von ihrer Ausführung durchgeführten Systemaufrufe inspizieren und verstehen.

Wenn es darum geht, solche Aufgaben auszuführen, bietet der Linux -Kernel Funktionen wie Ptrace zum Debuggen und Diagnose von Prozessen.

In diesem Artikel wird beschrieben.

Was sind Systemaufrufe?

Bevor wir besprechen, wie Sie Strace verwenden, müssen Sie verstehen, wonach wir suchen und wie sie funktionieren. Das heißt, wir sollten die Grundlagen von Linux -Systemaufrufen durchgehen,.

Ein Systemaufruf ist Eine programmatische Methode, mit der ein Programm einen Dienst vom Kernel des Systems anfordern kann. Dies ist der Prozess, den wir verwenden, um die Aktionen zwischen Benutzerprozessen und dem Linux -Kernel zu überprüfen.

Jedes Mal, wenn ein Benutzer ein Programm ausführt, das eine Lektüre, Schreiben, Töten, Beenden, Binden usw. macht., Anfrage, sie tauchen einen Systemanruf an. Es gibt eine breite Palette von Systemaufrufen, die von Programmen zur Ausführung verschiedener Aufgaben wie Netzwerk, Lesen und Schreiben in Dateien, Initialisierung und Beendigung von Prozessen und vielem mehr verwendet werden.

Stellen Sie sich Systemaufrufe als Funktionen vor-sie verhalten sich ähnlich, weil sie Argumente akzeptieren und Werte zurückgeben können. Der Hauptunterschied zwischen Systemaufrufen und normalem Betrieb besteht darin, dass Systemaufrufe direkt mit dem Kernel interagieren können. Systemaufrufe verwenden einen Trap -Mechanismus, um zwischen dem Benutzerraum und dem Kernel zu navigieren.

Im Linux -System ist dieser Mechanismus durch Bibliotheken wie GLIBC vor den Benutzern gut verborgen.

NOTIZ: Systemanrufe und Kernel -Interaktionen haben noch viel mehr als das, was wir in diesem Tutorial besprochen haben. Weitere Informationen finden Sie auf den manuellen Seiten.

https: // linkfy.zu/syscalls

https: // linkfy.zu/Trapmanual

So installieren Sie Strace unter Linux

Obwohl Strace-Tools in den wichtigsten Linux-Verteilungen standardmäßig vorinstalliert sind, ist es in den meisten offiziellen Repositories dieser Verteilungen verfügbar. Sie können es einfach über die Standardpaketmanager installieren.

NOTIZ: Obwohl wir nicht darüber abdecken, wie wir Strace auf allen Systemen installieren können, werden wir mit wichtigen Paketmanagern wie APT, DNF, Pacman und Yum diskutieren, wie wir dies tun können

1: Debian (APT) Installation

Installieren Sie Strace mit dem Befehl:

APT -GET -Installieren Sie Strace -y -y

2: Redhat Familie (DNF und Yum)

Um Strace mit Yum Paket Manager zu installieren, geben Sie den Befehl ein:

yum install Strace

Geben Sie für DNF Paket Manager den Befehl ein:

DNF Installieren Sie Strace

3: Arch Linux (Pacman)

Für Arch Linux -Benutzer können Sie Strace mit dem Befehl installieren:

Pacman -s Strace

Nachdem Sie Strace installiert und ausgeführt haben, können wir weitermachen und lernen, wie man benutzt

Grundlegende Strace-Nutzung: Eine Anleitung zur Anleitung

Lassen Sie uns die grundlegende Strace -Nutzung diskutieren und die grundlegende Ausgabe des Befehls verstehen und wie wir ihn verwenden können.

NOTIZ: Strace -Ausgabe wie Systemaufrufe Namen, entsprechende Argumente und Rückgabewerte werden vom Standardfehlerdateideskriptor (STDERR) behandelt.

Die grundlegende Möglichkeit, Strace zu verwenden.

Hier ist ein Beispiel dafür mit dem Befehl LS:

Wow! Das ist eine Menge Ausgabe für einen einfachen Befehl wie LS.

Obwohl wir nicht alle Ausgaben aus dem Befehl strace diskutieren können, können wir seine Bedeutung destillieren und verstehen.

Wenn Sie die erste Zeile in der obigen Ausgabe betrachten, werden Sie die folgenden Funktionen bemerken.

  • Der Name des Systemaufrufs
  • Die Argumente, die an den in Klammern eingeschlossenen Systemaufruf übergeben wurden.
  • Der Rückgabewert aus dem Systemaufruf

Daher wird in der ersten Zeile der Systemaufruf ausgeführt (Programmeprogramm mit dem angegebenen Argumente von Argumenten ausführen). * 13 vars */) und ein Rückgabewert von 0.

https: // linkfy.zu/ausführen

Das ausführende Systemanrufe führen die Binärzahlen aus, die wir in diesem Fall in (/bin/ls) verwenden möchten, und das Argument von Argumenten ist der Pfad, den wir in den Inhalt auflisten möchten.

Sie werden auch eine Notation bemerken, die mit einem Vorwärtsstrahl und einem Sternchen eingeschlossen ist. Für unser Beispiel:

/ * 13 vars */

Die obige Ausgabe gibt die Anzahl der zugegebenen Variablen an, die als Ergebnis des Aufrufens des Prozesses hinzugefügt wurden. Die Umgebung innerhalb der EXECV -Funktion wird durch die Verwendung der externen Umgebungsvariable zugegriffen, die als:

int main (int argc, char *argv [], char *envp [])

Die endgültige Ausgabe ist der Rückgabewert, der in diesem Fall 0 beträgt.

Sie werden auch feststellen, dass die meisten Zeilen der Strace -Ausgabe einem ähnlichen Muster folgen, das wir oben diskutiert haben.

Wie man bestimmte Systemaufrufe verfolgt

Obwohl Strace viele Informationen zu Programmen -Systemanrufen gibt, werden die meisten Instanzen Sie aufrufen. Dazu übergeben wir das Flag -E an den Befehl strace, gefolgt vom Namen des Systemaufrufs, den wir benötigen.

Wie wäre?. Zum Beispiel:

STACE -E les ls

Sie werden feststellen, dass dies nur Lesen von Systemanrufen anzeigt.

Der Read -System -Anruf akzeptiert drei Argumente: Dateideskriptor, Puffer und die Anzahl der Bytes. Der Systemaufruf liest sich dann zu den Grafen -Bytes aus dem übergebenen Dateideskriptor -Argument in den Puffer vor.

https: // linkfy.to/Readsyscall

Zusammenfassung der Systemanrufe

Mit Strace können wir auch eine Zusammenfassung der Systemanrufe durch einen Prozess erhalten. Durch das Übergeben des Arguments -C- oder -Summary -Arguments können wir eine Ausgabe wie die unten gezeigte Ausgabe erhalten:

Der Befehl filter. Um sowohl eine Zusammenfassung als auch die normale Strace -Ausgabe zu erhalten, bestehen Sie das -c -Argument.

So verwenden Sie Strace mit laufenden Prozessen

Zu anderen Zeiten benötigen Sie eine Spur eines Laufprozesses. Bis zu diesem Punkt haben wir nur Strace einen einzelnen Befehl verwendet. Um einen laufenden Prozess zu verfolgen, können wir das Argument -P -Argument verwenden, gefolgt vom PID -Prozess (PID).

Sie können die PID eines Laufprozesses mit den Tools mit oberen und grep, ps, hTOP, PIDOF oder anderen Systemüberwachung erhalten.

Um beispielsweise die PID des Apache -Prozesses zu erhalten, können wir verwenden:

PS -AX | Grep -i Apache2

Das sollte Ihnen den PID des Apache2 -Prozess.

Dies sollte eine Ausgabe anweisen, die der unten gezeigten ähnlich ist.

Strace verfolgt kontinuierlich den beigefügten Prozess und zeigt die Ausgabe an, wenn der beigefügte Prozess Systemaufrufe ausführt. Drücken Sie zum Beenden der Spur Strg + C, wodurch der Prozess vom Strace abgelöst wird.

So speichern Sie die Strace -Ausgabe in Dateien

Wir können auch die Ausgabe von Strace in eine Datei als Argument umleiten. Mit dem Flag -o -Flag, gefolgt vom Dateipfad als Argument, können wir Strace -Protokolle speichern.

Zum Beispiel:

Strace -p 3514 -o ~/desktop/apache_trace

Sobald die Datei gespeichert ist, können Sie sie später überwachen und analysieren.

Abschluss

In diesem Leitfaden haben wir gelernt, wie man Strace auf Major Linux -Verteilungen installiert und verwendet. Nachdem Sie Systemanrufe und die Funktionsweise von Prozessen verstehen, können Sie Strace verwenden, um einen laufenden Systemprozess zu überwachen und zu debuggen, der ausgeführt wird.

Die in diesem Tutorial erlernten Konzepte sind sehr nützlich, vor allem, weil Sie das verwenden können, was Sie gelernt haben, um zu überwachen, ob jemand an Systemprozessen manipuliert.