Sudo के साथ चलने पर मैं OS X dtruss आउटपुट को रीडायरेक्ट कैसे कर सकता हूं?


9

मैं dtrussमैक ओएस एक्स 10.9 पर चल रहा हूं । सरल उदाहरण है:

sudo -c ls

लेकिन मैं dtrussएक फाइल में आउटपुट कैप्चर करना चाहूंगा । मैंने कुछ देखा जो बताता है कि मैं कुछ ऐसा कर सकता हूं:

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

लेकिन जब मैं ऐसा करता हूं तब dtrussभी आउटपुट टर्मिनल पर जाता है और फ़ाइल की सूची से फ़ाइल पर lsपुनर्निर्देशित हो जाता है।

मैं dtrussकिसी फ़ाइल के आउटपुट को कैसे पुनर्निर्देशित कर सकता हूं ?


1
dtruss शायद चुड़ैल के stderrबजाय लिखते हैं stdoutजो >xकैप्चर करता है। यह प्रश्न बताता है कि क्या करना है: लिनक्स कम व्यवहार और stderr
Nifle

जवाबों:


9

मैं इसे इस तरह चला रहा हूं:

sudo dtruss -f -p 12345 2> /tmp/trace.txt
  • -f बाल प्रक्रियाओं का पालन करने के लिए कहते हैं।
  • -p आईडी को ट्रेस करने के लिए कौन सी प्रक्रिया निर्दिष्ट करता है।
  • 12345एक प्रक्रिया आईडी के लिए एक प्लेसहोल्डर है। आप देख कर topया प्राप्त कर सकते हैं ps -A
  • 2>आउटपुट फ़ाइल में मानक त्रुटि पाईप। किसी कारण से dtruss stderr पर सब कुछ आउटपुट करता है।

क्या आप यह बताने के लिए अपने उत्तर का विस्तार कर सकते हैं कि यह क्या करता है? धन्यवाद।
फिक्सर 1234

'-f' कहते हैं कि बच्चे की प्रक्रियाओं का पालन करें, '-p' निर्दिष्ट करता है कि कौन सी प्रक्रिया आईडी को ट्रेस करने के लिए है, '2>' आउटपुट फ़ाइल में मानक त्रुटि है। किसी कारण से dtruss stderr पर सब कुछ आउटपुट करता है।
ल्यूक क्विनाने

क्या 12345 प्रक्रिया आईडी के लिए एक प्लेसहोल्डर है (और वह कहां से आएगा)?
Fixer1234

यह एक प्रक्रिया आईडी के लिए एक प्लेसहोल्डर है। आप देख कर topया प्राप्त कर सकते हैं ps -A
ल्यूक क्विनाने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.