tubería strace a grep


30

Estoy tratando de pasar a stracetravés ccze, y la tubería no funciona como se esperaba.

La línea de comando que estoy ejecutando para probar es sudo strace -p $(pgrep apache2) | grep open, y todas las líneas salen, ignorando grep.

¿Hay algo especial en eso straceque causa este comportamiento?

Respuestas:


48

straceimprime sus trazas en error estándar, no en salida estándar. Esto se debe a que es común querer redirigir la salida estándar del programa, pero generalmente no es un problema que el stderr de strace y el stderr del programa estén mezclados.

Por lo tanto, debe redirigir straceel stderr a stdout para poder canalizarlo:

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

excepto que lo que realmente estás buscando es

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

¡¡funciona!! ¡gracias! - En realidad no estaba tratando de mirar solo las openllamadas, solo lo puse como ejemplo, lo que realmente estoy tratando de hacer es resaltar el color
Andrei

Me estoy poniendo strace: Invalid process id: '-e'con el último comando. Estoy en la versión 4.8. 2010-03-30.
Elijah Lynn

Ahh, en realidad tengo httpd (RHEL).
Elijah Lynn

1
@ElijahLynn Reemplace apache2por el nombre del proceso que le interesa. Verifique que pgrepimprima un solo PID, de lo contrario, elija uno y ejecútelo, por ejemplosudo strace -p 1234 -e open
Gilles 'SO- deje de ser malvado'

@Andrei, ¿qué pasa con el uso de vimresaltado de sintaxis de color? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -.
Pablo A
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.