2012-10-05 7 views
5

चल मैं इस प्रक्रिया की निगरानी क्षमताओं के साथ एक सी ++ आवेदन है, जो इस मॉडल के आधार पर राज्य में परिवर्तन की निगरानी करता है विकसित कर रहा हूँ है:, http://www.macdesign.net/capella/it4813/images/stallings-Linux_process-thread_states-f4.18.pngलिनक्स - पता करें कि प्रक्रिया के लिए तैयार या

हालांकि/proc/पीआईडी ​​/ स्थिति को जोड़ती है के रूप में दोनों "तैयार" और "निष्पादन" राज्यों को "चलने" में, मुझे नुकसान हुआ है कि मैं कैसे पता लगा सकता हूं कि इनमें से कौन सा राज्य वास्तव में एक प्रक्रिया है। क्या कोई इस बारे में कोई सुझाव दे सकता है कि मैं इसे कैसे खोज सकता हूं?

+5

सुझाव: देखें [यहां] (http://procps.sourceforge.net/), [यहां] (http://www.linux-tutorial.info/modules.php?name=MContent&pageid=84) और [ यहां] (http://www.linux-tutorial.info/modules.php?name=MContent&pageid=174)। विशेष रूप से पहला लिंक, भले ही यह/proc का उपयोग करता है, आपको बहुत उपयोगी टिप्स देना चाहिए। 'उम्मीद है कि मदद करता है ... – paulsm4

+0

कम अंत एकल कोर मशीनों पर-e.g. सस्ते नेटबुक- एक ही तत्काल एकमात्र प्रक्रिया चल रही है, और यह आपकी निगरानी प्रक्रिया होगी (मल्टीकोर मशीनों पर, कहानी अलग है)। इसलिए आप वास्तव में मापना चाहते हैं कि पिछले कुछ जिफियों के दौरान दी गई प्रक्रिया चल रही है यानी। शायद पिछले decisecond के दौरान। –

उत्तर

2

प्रश्न खराब है। एक सीपीयू पर, यह सचमुच कभी भी "चलने" स्थिति में एक प्रक्रिया देखने के लिए संभव है, क्योंकि परिभाषा के अनुसार निगरानी प्रक्रिया में सीपीयू है। यदि आपको प्रक्रिया संक्रमणों पर वास्तव में बढ़िया लॉगिंग नियंत्रण की आवश्यकता है, तो आपको इसे कर्नेल में करना होगा (या कम से कम इन-कर्नेल समर्थन के साथ - lttng या टूलटैप देखें जो यहां मदद कर सकते हैं)। उपयोगकर्ता स्पेस से सीपीयू उपयोग को ट्रैक करने के लिए उपकरण अधिक मोटे अनाज हैं, या तो कर्नेल द्वारा पहले से ट्रैक किए गए कुल उपयोग संख्याओं का उपयोग कर रहे हैं (उदा। /usr/bin/time) या अंतराल पर प्रक्रिया तालिका का नमूनाकरण करके (बूटचार्ट इस तरह से काम करता है)।

संबंधित मुद्दे