2010-12-01 13 views
9

मुझे एक समस्या है जो मुझे पागल बनाती है। मैं निम्न आदेश के साथ बैच मोड में शीर्ष चला रहा हूँ,शीर्ष बैच मोड में CPU उपयोग

top -b -n 1

समस्या मैं बैच मोड में 100 बार शीर्ष चला सकते है, लेकिन CPU उपयोग कभी नहीं अतीत मूल मूल्य बदल जाता है। स्मृति उपयोग अपेक्षित के रूप में बदलता है लेकिन सीपीयू वही रहता है। यदि मैं एक साथ एक अलग विंडो में एक और शीर्ष चलाता हूं तो सीपीयू उपयोग उस शीर्ष के लिए बदल रहा है लेकिन बैच मोड में शीर्ष के लिए नहीं।

असल में सीपीयू आंकड़े बैच मोड में परिवर्तित नहीं होते हैं और इंटरैक्टिव मोड में नहीं होते हैं। क्या किसी को पता है क्यों? इसे स्वयं आज़माएं, उपरोक्त आदेश को कुछ बार चलाएं और CPU उपयोग को उसी पर रखें और फिर इंटरैक्टिव मोड में शीर्ष पर चलाएं और CPU उपयोग को लगातार बदलते रहें।

+0

यहां ठीक काम करता है, अन्यथा आप 'ps' या शायद' सर 'का उपयोग कर सकते हैं। पूंछ -1' – Anders

+0

मुझे वही व्यवहार दिखाई देता है। बैच कमांड को CPU उपयोग, या कुछ के लिए अच्छे accumulators प्राप्त करने के लिए पर्याप्त लंबे समय तक नहीं चलना चाहिए। – aschepler

+0

एस्प्लर, ऐसा लगता है कि यह मामला है, लेकिन मैंने इसे कहीं और नहीं देखा है। यदि आप पुनरावृत्तियों को 2 पर सेट करते हैं तो यह काम करता है। समस्या यह है कि मुझे इसे 1 पुनरावृत्ति के लिए काम करने की ज़रूरत है। – toc777

उत्तर

6

पहले पुनरावृत्ति पर, यह आपको सिस्टम स्टार्टअप के बाद औसत CPU उपयोग दिखा रहा है।

(ध्यान दें कि यह top के नए संस्करणों के लिए अब मामला नहीं है)।

+0

हां, ऐसा लगता है कि यह मामला है। – toc777

+2

आप इसे कैसे जानते हैं? –

2

यहां एक लाइनर है जो इस मामले में लंबे समय तक संचयी CPU उपयोग प्रदर्शित करता है। आप इसे -d ध्वज के साथ समायोजित कर सकते हैं।

top -b -d 5 -n 2 | awk '$1 == "PID" {block_num++; next} block_num == 2 {sum += $9;} END {print sum}' 
संबंधित मुद्दे