Как я могу перенаправить вывод 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.