tubazioni stracciate a grep


30

Sto cercando di passare straceattraverso ccze, e il tubo non funziona come previsto.

La riga di comando che sto correndo per testare è sudo strace -p $(pgrep apache2) | grep opene tutte le linee vengono emesse, ignorando grep.

C'è qualcosa di speciale straceche causa questo comportamento?

Risposte:


48

stracestampa le sue tracce su errore standard, non su output standard. Questo perché è comune voler reindirizzare l'output standard del programma, ma di solito non è un problema che lo stderr di Strace e lo stderr del programma siano mescolati.

Quindi dovresti reindirizzare lo stracestderr su stdout per poterlo convogliare:

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

tranne che quello che stai davvero cercando è

sudo strace -p $(pgrep apache2) -e open

Funziona!! grazie! - In realtà non stavo cercando di guardare solo le openchiamate, l'ho solo messo come esempio, quello che sto davvero cercando di fare è l'evidenziazione dei colori
Andrei

Sto ottenendo strace: Invalid process id: '-e'con l'ultimo comando. Sono sulla versione 4.8. 2010-03-30.
Elijah Lynn,

Ah, in realtà ho httpd (RHEL).
Elijah Lynn,

1
@ElijahLynn Sostituire apache2con il nome del processo che ti interessa Verificare che. pgrepStampe un singolo PID, altrimenti sceglierne uno e gestito per esempiosudo strace -p 1234 -e open
Gilles 'SO-tappa è male'

@Andrei, che ne dici di vimevidenziare la sintassi del colore? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -.
Pablo A
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.