¿Alguna razón en particular por la que no puede usar el indicador -o?
ps auxw | grep sbin/apache | awk '{print " -p " $2}' | xargs strace -o /tmp/trace.txt
Además, debe usar algún truco de expresiones regulares para no capturar su proceso grep en la lista de procesos.
ps auxw | grep 'sbin/[a]pache' ....
También recuerda que en el caso específico de apache,
- Apache es (generalmente) multiproceso, ¿quiere obtener el padre o uno de los hijos? Agregaría el indicador '-f' a strace, que (entre otras cosas) inserta el PID en la salida.
-
Puede obtener el ID de proceso del proceso principal principal del archivo PID.
p.ej. strace -o /tmp//trace.txt -f $(
Entonces, esa es la pregunta que estás haciendo... pero ¿qué estás tratando de hacer? ¿Depurar al iniciar? rastrear un proceso secundario que atiende una solicitud? También mire el indicador -X para apache.
En general, strace "se puede redirigir a un archivo", pero escribe su salida en stderr (mezclándolo con el stderr del programa), por lo que sería como
strace progname 2>my_strace_output
Si desea que "toda la salida" vaya a un archivo:
strace progname 1>my_strace_output 2>&1
si quieres ser capaz de "grep":
strace progname 2>&1 | grep ...
sin embargo, tenga en cuenta que si hace grep y lo envía a un archivo, se produce mucho almacenamiento en búfer:https://unix.stackexchange.com/questions/338330/grepping-strace-output-gets-hard