पाइपिंग स्ट्रेप टू जीआरईपी


30

मैं straceगर्त चलाने की कोशिश कर रहा हूं ccze, और पाइप उम्मीद के मुताबिक काम नहीं कर रहा है।

कमांड-लाइन जो मैं परीक्षण करने के लिए चला रहा हूं sudo strace -p $(pgrep apache2) | grep open, और सभी लाइनें आउटपुट हैं, grep को अनदेखा कर रही हैं।

क्या straceइस व्यवहार के कारण कुछ खास है?

जवाबों:


48

straceमानक त्रुटि पर अपने निशान मुद्रित करता है, मानक आउटपुट पर नहीं। ऐसा इसलिए है क्योंकि यह प्रोग्राम के मानक आउटपुट को पुनर्निर्देशित करना चाहता है, लेकिन आमतौर पर यह समस्या नहीं है कि स्ट्रेस का स्ट्रीडर और प्रोग्राम का स्टैडर मिश्रित हैं।

तो आपको straceइसे पाइप करने में सक्षम होने के लिए स्टडरआउट को पुनर्निर्देशित करना चाहिए :

sudo strace -p $(pgrep apache2) 2>&1 | grep open

सिवाय इसके कि आप वास्तव में क्या देख रहे हैं

sudo strace -p $(pgrep apache2) -e open

यह काम करता हैं!! धन्यवाद! - मैं वास्तव में केवल openकॉल को देखने की कोशिश नहीं कर रहा था , मैंने सिर्फ एक उदाहरण के रूप में कहा, जो मैं वास्तव में करने की कोशिश कर रहा हूं वह रंग पर प्रकाश डाला गया है
आंद्रेई

मुझे strace: Invalid process id: '-e'आखिरी आज्ञा मिल रही है । मैं संस्करण ४. 4.8 पर हूं। 2010-03-30।
एलिजा लिन

आह, मेरे पास वास्तव में httpd (RHEL) है।
एलिजा लिन

1
@ElijahLynn apache2उस प्रक्रिया के नाम से बदलें , जिसमें आप रुचि रखते हैं। जांचें कि pgrepएक एकल PID प्रिंट करता है, अन्यथा एक को चुनें और चलाएं जैसेsudo strace -p 1234 -e open
Gilles 'SO- रोकना बुराई होना'

@Andrei, vimरंग वाक्यविन्यास हाइलाइटिंग का उपयोग करने के बारे में क्या ? strace $CMD 2>&1 > /dev/null | vim -c ':set syntax=strace' -
पाब्लो ए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.