Linux कमांड लाइन में दक्षता · पाठ

strace और ltrace से सिस्टम कॉल की ट्रेसिंग

किसी प्रक्रिया द्वारा की जाने वाली सिस्टम और लाइब्रेरी कॉल का अनुक्रम देखकर समस्या-निवारण को और गहराई से सीखें तथा ठीक-ठीक पता लगाएँ कि वह कहाँ रुकती या विफल होती है।

पाठ 4, कुल 4 में से13 चरण

strace और ltrace से सिस्टम कॉल की ट्रेसिंग, CoddyKit पर Linux कमांड लाइन में दक्षता का एक निःशुल्क पाठ है। यह 4 में से 4वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह Linux कमांड लाइन में दक्षता सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। Linux कमांड लाइन में दक्षता पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

जब मापदंड पर्याप्त नहीं होते

CPU, मेमोरी और इनपुट/आउटपुट उपकरण आपको बताते हैं कि कुछ धीमा है। यह जानने के लिए कि क्यों, आप यह ट्रेस करते हैं कि कोई प्रक्रिया वास्तव में कर्नेल से क्या करवाना चाहती है। strace और ltrace इस प्रक्रिया को देखने का माध्यम देते हैं।

strace क्या दिखाता है

strace हर सिस्टम कॉल को दर्ज करता है: फ़ाइल खोलना, पढ़ना, नेटवर्क पर भेजना और उनके वापसी मान, जिनमें त्रुटियाँ भी शामिल हैं।

strace ls /tmp

चल रही प्रक्रिया से जुड़ना

पहले से चल रही किसी चीज़, जैसे अटकी हुई सेवा, को ट्रेस करने के लिए -p PID का उपयोग करें।

sudo strace -p 4567

विशिष्ट कॉल को फ़िल्टर करना

-e trace= आउटपुट को केवल उन कॉल तक सीमित करता है जिनकी आपको आवश्यकता है, जैसे केवल फ़ाइल से संबंधित कॉल।

strace -e trace=openat,read,write cat /etc/hostname

गायब फ़ाइलें ढूँढना

इसका एक सामान्य उपयोग यह देखना है कि कोई प्रोग्राम किस फ़ाइल को खोलने में विफल हो रहा है। आउटपुट में ENOENT (ऐसी कोई फ़ाइल नहीं) खोजें।

strace -e trace=openat myapp 2>&1 | grep ENOENT

-c से सारांश बनाना

-c एक प्रोफ़ाइल दिखाता है: किन सिस्टम कॉल ने सबसे अधिक समय लिया और प्रत्येक कॉल कितनी बार की गई।

strace -c ls -R /usr/share

कॉल का समय मापना

-T दिखाता है कि प्रत्येक सिस्टम कॉल में कितना समय लगा, और -t समय-मुहरें जोड़ता है, जिससे यह पता चलता है कि कोई प्रक्रिया कहाँ रुक रही है।

strace -T -e trace=read myapp

बाल प्रक्रियाओं का अनुसरण करना

-f फ़ोर्क का अनुसरण करता है, इसलिए आप बाल प्रक्रियाओं को भी ट्रेस कर सकते हैं। यह उन सर्वरों के लिए आवश्यक है जो कार्यकर्ता प्रक्रियाएँ शुरू करते हैं।

strace -f -p 4567

आउटपुट को फ़ाइल में सहेजना

ट्रेस में बहुत-सी जानकारी होती है; -o उसे एक फ़ाइल में लिखता है, जिसे आप बाद में खोज सकते हैं और इस तरह टर्मिनल में अव्यवस्था नहीं होती।

strace -o trace.log -f myapp

लाइब्रेरी कॉल के लिए ltrace

जहाँ strace कर्नेल कॉल दिखाता है, वहीं ltrace malloc या strcmp जैसी लाइब्रेरी कॉल दिखाता है, जो तर्क-स्तर की त्रुटि-जाँच के लिए उपयोगी हैं।

ltrace ./myprogram

समस्या-निवारण की विधि

जब कोई सेवा अटक जाए: strace -f -p से जुड़ें, ऐसे सिस्टम कॉल पर ध्यान दें जो कभी वापस नहीं आता (अक्सर अवरुद्ध read या connect), और आपको रुकावट का स्थान मिल जाएगा।

त्वरित जाँच

strace मुख्य रूप से किस प्रकार की गतिविधि दिखाता है?

पुनरावलोकन

अब आप सिस्टम कॉल स्तर पर किसी प्रक्रिया को ट्रेस कर सकते हैं:

  • जुड़ने के लिए strace cmd या -p PID
  • -e trace= फ़िल्टर करता है, -c प्रोफ़ाइल बनाता है, और -T/-t समय दिखाते हैं
  • -f बाल प्रक्रियाओं का अनुसरण करता है, -o आउटपुट सहेजता है
  • ltrace लाइब्रेरी कॉल दिखाता है

ENOENT जैसी त्रुटियों या ऐसे सिस्टम कॉल पर ध्यान दें जो कभी वापस नहीं आते।

शुरुआत निःशुल्क

एआई शिक्षक के साथ Linux कमांड लाइन में दक्षता सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
12
पाठ
48

अक्सर पूछे जाने वाले प्रश्न

क्या “strace और ltrace से सिस्टम कॉल की ट्रेसिंग” पाठ निःशुल्क है?

हाँ—“strace और ltrace से सिस्टम कॉल की ट्रेसिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और Linux कमांड लाइन में दक्षता पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। Linux कमांड लाइन में दक्षता पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“strace और ltrace से सिस्टम कॉल की ट्रेसिंग” में मैं क्या सीखूँगा?

किसी प्रक्रिया द्वारा की जाने वाली सिस्टम और लाइब्रेरी कॉल का अनुक्रम देखकर समस्या-निवारण को और गहराई से सीखें तथा ठीक-ठीक पता लगाएँ कि वह कहाँ रुकती या विफल होती है। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ Linux कमांड लाइन में दक्षता का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या Linux कमांड लाइन में दक्षता शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर Linux कमांड लाइन में दक्षता शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 4वाँ पाठ है।

“strace और ltrace से सिस्टम कॉल की ट्रेसिंग” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस Linux कमांड लाइन में दक्षता पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर Linux कमांड लाइन में दक्षता पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. डिस्क I/O निगरानी: `iostat`, `iotop`
  2. मेमोरी और CPU प्रदर्शन उपकरण
  3. उन्नत लॉगिंग और समस्या-निवारण तकनीकें
  4. strace और ltrace से सिस्टम कॉल की ट्रेसिंग
← Linux कमांड लाइन में दक्षता पर वापस जाएँ