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?

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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.