GNU/Linux >> Znalost Linux >  >> Linux

Přesměrovat strace do souboru

Nějaký konkrétní důvod, proč nemůžete použít parametr -o?

ps auxw | grep sbin/apache | awk '{print " -p " $2}' | xargs strace -o /tmp/trace.txt

Také byste měli použít nějaký trik s regulárním výrazem, abyste nezachytili proces grep v seznamu procesů.

ps auxw | grep 'sbin/[a]pache' ....

Pamatujte také, že v konkrétním případě Apache,

  1. Apache je (obvykle) víceprocesový, chcete získat rodiče nebo jedno z potomků? Do strace bych přidal příznak '-f', který (mimo jiné) vkládá PID do výstupu.
  2. ID procesu hlavního nadřazeného procesu můžete získat ze souboru PID.

    např. strace -o /tmp//trace.txt -f $(

Tak to je otázka, kterou se ptáš, ale co se snažíš dělat? Ladit při spuštění? sledovat podřízený proces obsluhující požadavek? Podívejte se také na příznak -X pro apache.


Obecně platí, že strace "lze přesměrovat do souboru", ale zapíše svůj výstup do stderr (smíchá ho se stderr programu), takže by to bylo jako

strace progname 2>my_strace_output

Pokud chcete, aby se „veškerý výstup“ přesunul do souboru:

strace progname 1>my_strace_output 2>&1

pokud to chcete mít možnost "grep":

strace progname 2>&1 | grep ...

mějte však na paměti, že pokud grep a pošlete jej do souboru, dojde k velkému množství ukládání do vyrovnávací paměti:https://unix.stackexchange.com/questions/338330/grepping-strace-output-gets-hard


Linux
  1. Jak přesměrovat pouze Stderr?

  2. Grep Jak potlačit zobrazení neshodného souboru?

  3. Linuxový příkaz grep

  1. Jak 'grep' nepřetržitý proud?

  2. grep bez zobrazení cesty/souboru:řádku

  3. grep velký seznam proti velkému souboru

  1. Jak grep \nv souboru

  2. Jak přesměrovat výstup služby systemd do souboru

  3. Jak lokálně přesměruji doménu na jinou doménu?