Comment puis-je rediriger la sortie dtruss OS X lors de l'exécution avec sudo?

9

J'exécute dtrusssur Mac OS X 10.9. Un exemple simple est:

sudo -c ls

Mais je voudrais capturer la dtrusssortie dans un fichier. J'ai vu quelque chose qui suggère que je peux faire quelque chose comme:

sudo bash -c 'dtruss -c ls >x'

mais quand je le fais, la sortie de dtrussva toujours au terminal et la liste des fichiers de lsest redirigée vers le fichier.

Comment puis-je rediriger la sortie de dtrussvers un fichier?

Chris Markle
la source
1
dtruss écrit probablement au stderrlieu de stdoutsorcière ce qui >xcapture. Cette question explique ce qu'il faut faire: Linux moins de comportement et stderr
Nifle

Réponses:

9

Je l'ai couru comme ceci:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f dit de suivre les processus enfants.
  • -p spécifie l'ID de processus à suivre.
  • 12345est un espace réservé pour un ID de processus. Vous pouvez obtenir cela en regardant topou ps -A.
  • 2>canalise l'erreur standard dans le fichier de sortie. Pour une raison quelconque, dtruss envoie tout sur stderr.
Luke Quinane
la source
Pourriez-vous développer votre réponse pour expliquer ce que cela fait? Merci.
fixer1234
'-f' indique suivre les processus enfants, '-p' spécifie l'ID de processus à tracer, '2>' canalise l'erreur standard dans le fichier de sortie. Pour une raison quelconque, dtruss envoie tout sur stderr.
Luke Quinane
12345 est-il un espace réservé pour l'ID de processus (et d'où proviendrait-il)?
fixer1234
Il s'agit d'un espace réservé pour un ID de processus. Vous pouvez obtenir cela en regardant topou ps -A.
Luke Quinane