Як я можу переадресувати вихідний файл dtruss OS X під час роботи з 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 менше поведінки та
жорсткіше

Відповіді:


9

Я запускаю це так:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f каже слідкувати за дочірніми процесами.
  • -p визначає, який ідентифікатор процесу слід відстежувати.
  • 12345є заповнювачем ідентифікатора процесу. Ви могли б отримати , що, дивлячись на topабо ps -A.
  • 2>передає стандартну помилку у вихідний файл. Чомусь dtruss виводить все на stderr.

Чи можете ви розширити свою відповідь, щоб пояснити, що це робить? Дякую.
fixer1234

'-f' говорить слідкувати за дочірніми процесами, '-p' визначає, який ідентифікатор процесу слід відстежувати, '2>' вводить стандартну помилку у вихідний файл. Чомусь dtruss виводить все на stderr.
Лука Кіньян

Чи 12345 - заповнювач місця для ідентифікатора процесу (і звідки це буде)?
fixer1234

Це заповнення ідентифікатора процесу. Ви могли б отримати , що, дивлячись на topабо ps -A.
Лука Кіньян
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.