Bagaimana saya bisa mengarahkan output dtruss OS X saat menjalankan dengan sudo?

9

Saya dtrussmenggunakan Mac OS X 10.9. Contoh sederhana adalah:

sudo -c ls

Tapi saya ingin menangkap dtrussoutput ke dalam file. Saya melihat sesuatu yang menunjukkan bahwa saya dapat melakukan sesuatu seperti:

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

tetapi ketika saya melakukan ini output dtrussmasih pergi ke terminal dan daftar file dari lsakan diarahkan ke file.

Bagaimana saya bisa mengarahkan output dtrusske file?

Chris Markle
sumber
1
dtruss mungkin menulis untuk stderrbukannya stdoutpenyihir adalah yang >xmenangkap. Pertanyaan ini menjelaskan apa yang harus dilakukan: Linux lebih sedikit perilaku dan stderr
Nifle

Jawaban:

9

Saya sudah menjalankannya seperti ini:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f mengatakan untuk mengikuti proses anak.
  • -p menentukan ID proses yang akan dilacak.
  • 12345adalah pengganti untuk ID proses. Anda bisa mendapatkannya dengan melihat topatau ps -A.
  • 2>pipa kesalahan standar ke file output. Untuk beberapa alasan, dtruss menampilkan semuanya pada stderr.
Luke Quinane
sumber
Bisakah Anda memperluas jawaban Anda untuk menjelaskan apa artinya ini? Terima kasih.
fixer1234
'-f' mengatakan ikuti proses anak, '-p' menentukan ID proses yang akan dilacak, '2>' mem-pipe standard error ke file output. Untuk beberapa alasan, dtruss menampilkan semuanya pada stderr.
Luke Quinane
Apakah 12345 pengganti untuk ID proses (dan dari mana asalnya)?
fixer1234
Ini adalah pengganti untuk ID proses. Anda bisa mendapatkannya dengan melihat topatau ps -A.
Luke Quinane