Qualche motivo particolare per cui non puoi usare il flag -o?
ps auxw | grep sbin/apache | awk '{print " -p " $2}' | xargs strace -o /tmp/trace.txt
Inoltre, dovresti usare qualche trucco regex per non catturare il tuo processo grep nell'elenco dei processi.
ps auxw | grep 'sbin/[a]pache' ....
Ricorda inoltre che nel caso specifico di apache,
- Apache è (di solito) multiprocesso, vuoi ottenere il genitore o uno dei figli? Aggiungerei il flag '-f' a strace, che (tra le altre cose) inserisce il PID nell'output.
-
È possibile ottenere l'ID di processo del processo padre principale dal file PID.
per esempio. strace -o /tmp//trace.txt -f $(
Quindi, questa è la domanda che ti stai ponendo... ma cosa stai cercando di fare? Debug all'avvio? strance un processo figlio che serve una richiesta? Guarda anche il flag -X per apache.
In generale, strace "può essere reindirizzato a un file" ma scrive il suo output in stderr (mescolandolo con lo stderr del programma), quindi sarebbe come
strace progname 2>my_strace_output
Se vuoi che "tutto l'output" vada in un file:
strace progname 1>my_strace_output 2>&1
se vuoi essere in grado di "grepparlo":
strace progname 2>&1 | grep ...
tuttavia, tieni presente che se esegui grep e lo invii a un file, si verifica un sacco di buffering:https://unix.stackexchange.com/questions/338330/grepping-strace-output-gets-hard