लिनक्स कमांड लाइन में सीपीयू का उपयोग करने के लिए कौन से तरीके उपलब्ध हैं? [बन्द है]


12

हम जानते हैं कि topलिनक्स में सीपीयू का उपयोग करने के लिए एक कमांड है और अन्य तरीकों में शामिल है cat /proc/statजो शीर्ष द्वारा उपयोग किया जाता है।

लिनक्स कमांड लाइन में सीपीयू का उपयोग करने के लिए अन्य तरीके क्या हैं?

केस परिदृश्य का उपयोग करें: इस कमांड के आउटपुट का उपयोग स्क्रिप्ट द्वारा CPU उपयोग को लगातार लॉग करने के लिए किया जाएगा। topऔर /proc/statविस्तृत उपयोग दें जिसे लॉग करना मुश्किल है। क्या सीपीयू जानकारी प्राप्त करने का एक आसान तरीका है?


3
आपके द्वारा बोली जाने में क्या गलत है?
pataluc

@ पाटलुक यह अधिक विस्तृत जानकारी देता है। मुझे एक समग्र सीपीयू उपयोग की आवश्यकता है जो सीपीयू कहते हैं: 91% मेम का इस्तेमाल किया गया: 78% मेम फ्री: 22% कुछ इस तरह से ..
फसिल

नाथन के उत्तर को देखें ... sedयदि आप केवल मूल्य चाहते हैं तो आप परिणाम दे सकते हैं।
पटलुक

"रचनात्मक नहीं" के रूप में बंद करने के लिए मतदान। से superuser.com/help/dont-ask : " चिह्नित किये जा रहा है और संभवतः हटा दिया, से बचने के व्यक्तिपरक सवाल जहां ... आपका जवाब सवाल के साथ प्रदान की जाती है पूछ रहे हैं, और अगर आप और उत्तर की उम्मीद से अपने प्रश्न को रोकने के लिए: 'मैं का उपयोग ______ के लिए ______ , तुम क्या इस्तेमाल करते हो?' "
bwDraco

3
@DragonLord वास्तव में, ऐसा करने के काफी सीमित तरीके हैं और यहाँ दो उत्तर वास्तव में उपयोगी हैं। मेरा एक बहुत ही गलत धारणा के बारे में बताता है topऔर दूसरा बहुत उपयोगी आदेश देता है। यह एक एक्स का उपयोग नहीं है , आप कैसे 'डटकर? प्रश्न, लेकिन मैं एक्स प्रश्न कैसे करूं ? फिर से मतदान करना।
तेरह

जवाबों:


14

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

topउपयोगकर्ता, सिस्टम प्रक्रियाओं और niceप्रक्रियाओं के बीच सीपीयू उपयोग को विभाजित करता है, हम तीनों का योग चाहते हैं। इसलिए, हम atch मोड topमें चल सकते हैं bजो हमें इसके आउटपुट को पार्स करने की अनुमति देता है। हालाँकि, जैसा कि यहाँ बताया गया है , 1 पुनरावृत्ति top -bबूट के बाद प्रतिशत की वापसी करता है, इसलिए हमें -n 2वर्तमान प्रतिशत प्राप्त करने के लिए कम से कम दो पुनरावृत्तियों ( ) की आवश्यकता है । चीजों को गति देने के लिए, आप dपुनरावृत्तियों के बीच योग को सेट कर सकते हैं 0.01। अंत में, आप grepCPU प्रतिशत युक्त लाइन और फिर gawkउपयोगकर्ता, प्रणाली और अच्छी प्रक्रियाओं का उपयोग करने के लिए उपयोग करते हैं:

    top -bn 2 -d 0.01 | grep '^%Cpu' | tail -n 1 | gawk '{print $2+$4+$6}'
        -----  ------   -----------    ---------   ----------------------
          |      |           |             |             |------> add the values
          |      |           |             |--> keep only the 2nd iteration
          |      |           |----------------> keep only the CPU use lines
          |      |----------------------------> set the delay between runs
          |-----------------------------------> run twice in batch mode

मुझे लगा कि आप ps -o pcpu axप्रत्येक चल रही प्रक्रिया का% उपयोग जोड़कर भी यह जानकारी प्राप्त कर सकते हैं । दुर्भाग्य से, जैसा कि यहाँ बताया गया है , ps"किसी प्रक्रिया के पूरे जीवनकाल के दौरान बिताए गए समय का प्रतिशत लौटाता है" जो कि आपकी आवश्यकता नहीं है।


संपादित करें

आपकी टिप्पणी के आधार पर, आपका संस्करण topमेरे लिए अलग है और आपको इसके बजाय इसका उपयोग करना चाहिए:

top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

और, स्थानीयकरण के मुद्दों से बचने के लिए, लोकेल को C पर सेट करें:

LC_ALL=C top -bn 2 -d 0.01 | grep '^Cpu.s.' | tail -n 1 | gawk '{print $2+$4+$6}'

मैंने अपना उत्तर हटा दिया क्योंकि आपने जो कहा वह सही है। यह एक मान्य विधि प्रतीत होती है।
नाथन सी।

@ नथन सी मुझे लगा कि आपका उत्तर भी सही था, यह वही था जो मैंने उत्तर दिया होगा। फिर मैंने इसका परीक्षण किया और आश्चर्यचकित हो गया :)।
टेराडॉन

@terdon आपके विस्तृत उत्तर के लिए धन्यवाद ... मैं उपरोक्त कमांड के लिए आउटपुट प्राप्त करने में सक्षम नहीं हो सका। क्या कोई
सिन्थेटिक

@fasil नहीं, यह काम करना चाहिए। समस्या क्या है? कोई त्रुटि संदेश?
टेराडॉन

@terdon मुझे पूर्ण कमांड के लिए कोई आउटपुट नहीं मिलता है .. #top -bn 2 -d 0.01 के साथ मुझे पूरा परिणाम मिलता है, लेकिन grep '^% Cpu' को जोड़ने पर मुझे कोई आउटपुट नहीं दिखता है बस प्रॉम्प्ट रिटर्न नहीं त्रुटि ...
fasil

9

sarयह करने के लिए निश्चित तरीका है। उदाहरण के लिए sar -uकुछ इस तरह उत्पादन होगा:

08:30:01 AM       CPU     %user     %nice   %system   %iowait     %idle
08:40:01 AM       all      6.94      0.00      1.77      4.92     86.36
08:50:01 AM       all      5.73      0.00      2.31     12.72     79.24
09:00:01 AM       all      5.95      0.00      2.58     18.36     73.11
09:10:01 AM       all      6.88      0.00      2.22     17.44     73.45
09:20:01 AM       all      8.61      0.00      2.68     27.93     60.78

आप यह नहीं कहते कि आप किस लिनक्स का उपयोग करते हैं लेकिन CentOS / RedHat के लिए आपको sysstatपैकेज स्थापित करने की आवश्यकता है , और मुझे लगता है कि यह डेबियन या उबंटू पर समान है।

आप आंकड़े इकट्ठा करने के लिए खोज एवं बचाव का उपयोग कर सकते तदर्थ :

sar -o /tmp/sar.out 60 600

हर 60 सेकंड में 600 बार आँकड़े इकट्ठा करेगा, इसलिए 600 मिनट।


1
आपको संभवतः इसे अलग-अलग वाक्यांश देना चाहिए। आपके द्वारा पोस्ट की जाने वाली लाइन हर 60 सेकंड, 600 बार मापेगी। जिस तरह से मैंने आपकी पोस्ट को पढ़ा वह यह था कि 600 एक अवधि है, इसलिए यदि मैं 30 600 लगाता हूँ, तो उसे हर 30 सेकंड में 600 मिनट लगेंगे, हालाँकि यह वास्तव में हर 30 सेकंड में 600 बार होगा।
जेम्स मैकडोनेल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.