Как я могу перенаправить вывод 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.
Люк Куинан
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.