Como redirecionar a saída do dtruss do OS X ao executar com o sudo?

9

Estou executando dtrussno Mac OS X 10.9. Um exemplo simples é:

sudo -c ls

Mas eu gostaria de capturar a dtrusssaída em um arquivo. Eu vi algo que sugere que eu posso fazer algo como:

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

mas quando faço isso, a saída de dtrussstill vai para o terminal e a lista de arquivos lsé redirecionada para o arquivo.

Como redirecionar a saída de dtrusspara um arquivo?

Chris Markle
fonte
11
Dtruss provavelmente escreve para o que captura, em stderrvez de stdoutbruxa >x. Esta pergunta explica o que fazer: Linux menos comportamento e stderr
Nifle

Respostas:

9

Eu tenho rodado assim:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f diz para seguir processos filho.
  • -p especifica qual ID do processo rastrear.
  • 12345é um espaço reservado para um ID do processo. Você pode conseguir isso olhando para topou ps -A.
  • 2>canaliza erro padrão no arquivo de saída. Por alguma razão, o dtruss gera tudo no stderr.
Luke Quinane
fonte
Você poderia expandir sua resposta para explicar o que isso faz? Obrigado.
fixer1234
'-f' diz seguir os processos filhos, '-p' especifica qual ID de processo rastrear, '2>' direciona o erro padrão para o arquivo de saída. Por alguma razão, o dtruss gera tudo no stderr.
Luke Quinane
12345 é um espaço reservado para o ID do processo (e de onde isso viria)?
fixer1234
É um espaço reservado para um ID do processo. Você pode conseguir isso olhando para topou ps -A.
Luke Quinane 6/03/15