20 votes

Rediriger strace vers un fichier

J'essaie de tracer apache2. Voici les commandes que j'essaie d'exécuter.

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

J'ai essayé

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

o

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

23voto

Lark Points 1640

Y a-t-il une raison particulière pour laquelle vous ne pouvez pas utiliser le drapeau -o ?

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

De plus, vous devriez utiliser une astuce regex pour ne pas attraper votre processus grep dans la liste des processus.

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

Rappelez-vous également que dans le cas spécifique d'apache,

  1. Apache est (généralement) multiprocessus, voulez-vous obtenir le parent ou l'un des enfants ? J'ajouterais l'option '-f' à strace, qui (entre autres choses) insère le PID dans la sortie.
  2. Vous pouvez obtenir l'ID du processus principal parent à partir du fichier PID.

    Par exemple, strace -o /tmp//trace.txt -f $(< /path/to/apache.pid)

Donc, c'est la question que vous posez mais qu'essayez-vous de faire ? Déboguer au démarrage ? Tracer un processus enfant servant une requête ? Regardez aussi le drapeau -X d'Apache.

9voto

NT. Points 109

En général, strace "peut être redirigé vers un fichier" mais il écrit sa sortie sur stderr (en la mélangeant avec le stderr du programme), donc ce serait comme suit

strace progname 2>my_strace_output

Si vous voulez que "toute la sortie" aille dans un fichier :

strace progname 1>my_strace_output 2>&1

si vous voulez être capable de le "grep" :

strace progname 2>&1 | grep ...

Cependant, il faut savoir que si vous faites un grep et que vous l'envoyez dans un fichier, il y a beaucoup de mise en mémoire tampon : https://unix.stackexchange.com/questions/338330/grepping-strace-output-gets-hard

1voto

Jean Vincent Points 271
 ps auxw | grep sbin/apache | awk '{print"-p " $2}' | xargs strace 2>> trace.txt

0voto

linead Points 1295

Vous pouvez également diriger la sortie standard vers un fichier de cette manière :

(time /bin/ls) &> /tmp/time.txt

ou pour déboguer un script php script :

(strace php /path/to/www/script.php) &> strace_output.txt

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X