GNU/Linux >> Linux Esercitazione >  >> Linux

Reindirizza la traccia al file

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,

  1. 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.
  2. È 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


Linux
  1. Come reindirizzare solo Stderr?

  2. Come reindirizzare l'output del servizio systemd su un file

  3. Come eseguire il grep di una sezione di un file nella shell bash

  4. Come posso reindirizzare un dominio a un altro dominio in locale?

  5. cp -L contro cp -H

Come reindirizzare stderr a stdout in Bash

Come trovare una stringa in un file su Linux

grep senza mostrare percorso/file:riga

grep un elenco di grandi dimensioni su un file di grandi dimensioni

Come grep \n nel file

reindirizzare i log del servizio systemd su file