जैसा कि दूसरों ने कहा है, सबसे अच्छा तरीका शायद है 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}'