GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Ein- und Ausgabe von einer bestimmten ausführbaren Datei abfangen?

Ich habe eine bestimmte ausführbare Linux-Datei, die von einer größeren Anwendung aufgerufen wird, um einige Berechnungen durchzuführen. Ich möchte die Art und Weise ändern, wie die Berechnungen durchgeführt werden, dazu muss ich zuerst verstehen, wie die ausführbare Datei aufgerufen wird und auf welche Weise die Parameter und Daten übertragen werden.

Ich möchte also die Befehlszeilenparameter stdin und stdout überwachen, wenn diese ausführbare Datei aufgerufen wird. Der normale Betrieb der ausführbaren Datei sollte nicht gestört werden.

Gibt es dafür eine einfache Möglichkeit?

Aktualisierung:

Ich habe versucht, die Shell-Skript-Platzhalter-Idee zu verwenden, um alle Daten mit dem folgenden Skript zu erfassen:

#!/bin/bash
export LOGFILE=/tmp/logname
echo `env` > $LOGFILE-env
echo "[email protected]" >> $LOGFILE-arguments
tee -a $LOGFILE-stdin | /path/to/real/executable 2>&1 | tee -a $LOGFILE-stdout

Dies funktioniert gut für Testeingaben, aber es hängt nur, wenn es wirklich aufgerufen wird. Wahrscheinlich ist da noch mehr los, als ich vermutet habe.

Akzeptierte Antwort:

Option 1 wäre, den Quellcode der aufrufenden App zu ändern und tee einzufügen in die Ausgabepipeline, um in diesem Stadium eine Kopie der Ausgabe zur Überprüfung zu erhalten.

Option 2 wäre, ein Wrapper-Skript um die betreffende ausführbare Datei zu schreiben. Ein schnelles Skript, das stdin und Argumente an die echte App weitergibt, dann die Ausgabe an einen Ort leitet, an dem Sie sie überprüfen können, und sie auch wieder ausspuckt, so wie die App nur ein paar Zeilen zum Aufpeppen sein sollte. Platzieren Sie es an einem speziellen Ort und fügen Sie diesen Ort vor Ihrer PATH-Variablen hinzu, und führen Sie dann Ihre Anwendung aus.

#!/bin/sh
cat - | /path/to/realapp [email protected] | tee /tmp/debug_output

Linux
  1. Arbeiten mit Eingabeausgabe und Fehlerumleitung in Linux

  2. Wie funktionieren Tastatureingabe und Textausgabe?

  3. Befehlsausgabeumleitung auf Datei und Terminal

  4. Wie interpretiere und behebe ich einen Eingabe-/Ausgabefehler in Linux?

  5. Interpretieren von dd Input/Output-Fehler

So führen Sie Befehle von der Standardeingabe mit Tee und Xargs in Linux aus

Eingabe-Ausgabe-Umleitung unter Linux erklärt

Ausgabe von Sensoren einfärben?

Redundanz aus Ausgabespalten entfernen?

Erklärt:Eingabe-, Ausgabe- und Fehlerumleitung in Linux

Shell-Scripting Teil 4 – Eingabe, Ausgabe und Umleitung