GNU/Linux >> Znalost Linux >  >> Linux

Zachycovat vstup a výstup z konkrétního spustitelného souboru?

Mám určitý spustitelný soubor Linuxu, který je volán z větší aplikace, aby provedl nějaké výpočty. Chci upravit způsob provádění výpočtů, k tomu musím nejprve pochopit, jak se spustitelný soubor nazývá a jakým způsobem se přenášejí parametry a data.

Rád bych tedy sledoval parametry příkazového řádku, stdin a stdout, pokud je tento spustitelný soubor volán. Normální provoz spustitelného souboru by neměl být narušen.

Existuje snadný způsob, jak to udělat?

Aktualizace:

Vyzkoušel jsem myšlenku zástupného symbolu skriptu shell získat všechna data pomocí následujícího skriptu:

#!/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

To funguje dobře pro testovací vstup, ale pouze se zasekne, pokud je volán skutečně. Pravděpodobně se toho děje ještě víc, než jsem tušil.

Přijatá odpověď:

Možnost 1 by byla upravit zdrojový kód volající aplikace a vložit tee do výstupního potrubí, abyste získali kopii výstupu pro kontrolu v této fázi.

Možnost 2 by byla napsat obalový skript kolem příslušného spustitelného souboru. Rychlý skript, který předá stdin a argumenty skutečné aplikaci, pak je výstupem na místo, které si můžete prohlédnout, a také jej vyplivne stejným způsobem, jakým by aplikace měla být jen pár řádků. Umístěte to na nějaké speciální místo a přidejte toto umístění na začátek proměnné PATH a poté spusťte aplikaci.

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

Linux
  1. Práce s Input Output a přesměrováním chyb v Linuxu

  2. Jak funguje vstup z klávesnice a textový výstup?

  3. Jak přesměrovat výstup do souboru a stdout

  1. Jak interpretovat a opravit chybu vstupu/výstupu v Linuxu?

  2. Zachyťte vstup a výstup z konkrétního spustitelného souboru

  3. Interpretace dd Input/Output error

  1. Ssh – Jak Ssh vyzve k zadání hesla, když jsou všechny vstupy a výstupy přesměrovány?

  2. Přesměrování a výstup potrubí?

  3. Jak extrahovat hodnotu (v konkrétním řádku a sloupci) ze souboru a přiřadit ji k nové proměnné