Rohrleitung zum Greifen

30

Ich versuche stracedurchzulaufen cczeund die Pipe funktioniert nicht wie erwartet.

Die Befehlszeile, die ich zum Testen ausführe sudo strace -p $(pgrep apache2) | grep open, ist und alle Zeilen werden ausgegeben, wobei grep ignoriert wird.

Gibt es etwas Besonderes strace, das dieses Verhalten verursacht?

Andrei
quelle

Antworten:

48

stracedruckt seine Spuren auf Standardfehler, nicht auf Standardausgabe. Das liegt daran, dass es üblich ist, die Standardausgabe des Programms umzuleiten, aber normalerweise ist es kein Problem, dass der stderr von strace und der stderr des Programms gemischt sind.

Sie sollten also stracestderr von stdout umleiten , um es weiterleiten zu können:

sudo strace -p $(pgrep apache2) 2>&1 | grep open

aber das, wonach du wirklich suchst, ist

sudo strace -p $(pgrep apache2) -e open
Gilles 'SO - hör auf böse zu sein'
quelle
Es klappt!! Danke dir! - Ich habe eigentlich nicht versucht, nur openAnrufe zu betrachten, ich habe das nur als Beispiel angeführt, was ich wirklich versuche, ist das Hervorheben von Farben
Andrei
Ich komme strace: Invalid process id: '-e'mit dem letzten Befehl. Ich bin auf Version 4.8. 2010-03-30.
Elijah Lynn
Ahh, ich habe tatsächlich httpd (RHEL).
Elijah Lynn
1
@ElijahLynn Ersetzen Sie apache2durch den Namen des Prozesses Sie interessiert sind , dass der Check. pgrepEine einzige PID druckt, sonst ein Pick und laufen zBsudo strace -p 1234 -e open
Gilles ‚SO- Anschlag, der böse‘
@Andrei, wie steht es mit der vimHervorhebung der Farbsyntax? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -.
Pablo A