Как я могу перенаправить вывод OS X dtruss при работе с sudo?

9

Я работаю dtrussна Mac OS X 10.9. Простой пример:

sudo -c ls

Но я хотел бы записать dtrussвывод в файл. Я видел то, что говорит о том, что я могу сделать что-то вроде:

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

но когда я делаю это, вывод dtrussвсе еще идет в терминал, и список файлов из lsперенаправляется в файл.

Как я могу перенаправить вывод dtrussв файл?

Крис Маркл
источник
1
Dtruss, вероятно, пишет, stderrа не stdoutведьма, что >xзахватывает. Этот вопрос объясняет, что делать: Linux меньше поведения и stderr
Nifle

Ответы:

9

Я запускаю это так:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f говорит, чтобы следовать дочерним процессам.
  • -p указывает, какой идентификатор процесса отслеживать.
  • 12345является заполнителем для идентификатора процесса. Вы можете получить это, посмотрев на topили ps -A.
  • 2>стандартная ошибка труб в выходной файл. По какой-то причине dtruss выводит все на stderr.
Люк Куинан
источник
Не могли бы вы расширить свой ответ, чтобы объяснить, что это делает? Спасибо.
fixer1234
«-f» говорит, что следует за дочерними процессами, «-p» указывает, какой ID процесса отслеживать, «2>» передает стандартную ошибку в выходной файл. По какой-то причине dtruss выводит все на stderr.
Люк Кинэйн
Является ли 12345 заполнителем для идентификатора процесса (и откуда он берется)?
fixer1234
Это заполнитель для идентификатора процесса. Вы можете получить это, посмотрев на topили ps -A.
Люк Куинан