ฉันจะเปลี่ยนเส้นทางการส่งออก 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 ระบุ ID กระบวนการที่จะติดตาม
  • 12345เป็นตัวยึดตำแหน่งสำหรับ ID กระบวนการ คุณสามารถได้รับว่าด้วยการมองหาที่หรือtopps -A
  • 2>ข้อผิดพลาดมาตรฐานท่อลงในไฟล์ที่ส่งออก ด้วยเหตุผลบางอย่าง dtruss ให้ผลลัพธ์ทุกอย่างบน stderr

คุณช่วยขยายคำตอบของคุณเพื่ออธิบายสิ่งนี้ได้อย่างไร ขอบคุณ
fixer1234

'-f' พูดว่าทำตามกระบวนการลูก '-p' ระบุรหัสกระบวนการที่จะติดตาม '2>' ไปป์ข้อผิดพลาดมาตรฐานลงในไฟล์เอาต์พุต ด้วยเหตุผลบางอย่าง dtruss ให้ผลลัพธ์ทุกอย่างบน stderr
ลุค Quinane

12345 เป็นตัวยึดสำหรับ ID กระบวนการ (และจะมาจากที่ใด)
fixer1234

มันเป็นตัวยึดสำหรับกระบวนการ ID คุณสามารถได้รับว่าด้วยการมองหาที่หรือtop ps -A
Luke Quinane
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.