आदेशों के समूहों (प्रक्रियाओं के बजाय) के सारांशीय स्मृति उपयोग को कैसे देखें


10

क्या शीर्ष / htop जैसे उपकरणों का उपयोग करते समय समान प्रक्रियाओं को समूहित करने का एक तरीका है? कभी-कभी मैं बस यह जानना चाहता हूं कि मेरी मेमोरी क्या खा रही है और कुछ प्रोग्राम (ब्राउज़र ज्यादातर) कई प्रक्रियाओं का उपयोग कर रहे हैं, जिससे यह पढ़ना मुश्किल है कि वे वास्तव में कितना रैम का उपयोग करते हैं।

अब तक मैं केवल कुछ के साथ आया था:

ps ax -o pmem,cmd | grep opera | grep -oE '^[ ]*[0-9.]+' | paste -sd+ - | bc

जवाबों:


7

आप ps -Cकिसी विशेष कमांड नाम के लिए केवल प्रक्रिया की जानकारी प्रदर्शित करने के लिए उपयोग कर सकते हैं ।

जैसे

ps -C opera

तब आप अन्य psविकल्पों का उपयोग कर सकते हैं, केवल आपके द्वारा खोजे जा रहे डेटा को निकालने के लिए। विशेष रूप से, hया --no-headersकॉलम हेडर को दबाने के लिए, और -o pmemप्रक्रिया द्वारा उपयोग की जाने वाली मेमोरी का प्रतिशत दिखाने के लिए।

ps -C opera --no-headers -o pmem

यह आपको स्मृति-उपयोग प्रतिशत का एक गुच्छा देगा, प्रति पंक्ति एक।

डेटा को समेटने की कई विधियाँ हैं, जैसे कि मेरे द्वारा उपयोग की जाने वाली विधियों में से एक इसे xargs में पाइप करने के लिए है, इसे एक लाइन में रिक्त स्थान द्वारा सीमांकित तत्वों के साथ परिवर्तित करने के लिए, फिर sed को +प्रतीक में स्थान बदलने के लिए , और फिर bcप्रदर्शन करने के लिए। गणना। पाइपिंग की आपकी विधि paste -sd+काम करती है या यकीनन इससे बेहतर है | xargs | sed

उस सभी को एक साथ रखकर, आपको मिलता है:

ps -C opera --no-headers -o pmem | xargs | sed -e 's/ /+/g' | bc

या

ps -C opera --no-headers -o pmem | paste -sd+ | bc

दूसरे शब्दों में, आप ps -Cएक से अधिक चल रहे प्रोग्राम के बारे में डेटा चाहते हैं, तो आप कई greps के बजाय उपयोग कर सकते हैं ।

नोट: -Cयदि आप एक बार में एक से अधिक प्रोग्राम के बारे में जानकारी चाहते हैं, तो आप एक ही कमांड लाइन पर कई विकल्पों का उपयोग कर सकते हैं । जैसे

ps -C iceweasel -C chromium -C opera

याय, पहला व्यक्ति जो वास्तव में मेरे प्रश्न को समझता / पढ़ता है!
कोर्डा

केवल इस समस्या को मैं इस दृष्टिकोण के साथ देख रहा हूं कि कुछ कार्यक्रमों में एक ही कमांड है और फिर भी मैं उन्हें समूहित नहीं करना चाहता हूं (उदाहरण के लिए जावा ... और जब से मैं जावा डेवलपर हूं, मेरे पास कम से कम कुछ जावा प्रोग्राम चल रहे हैं)। मुझे लगता है कि कोई सही समाधान नहीं है ...
कोर्ड

वहाँ हमेशा ps h -C java -o pmem,args | awk '/foo/ {print $1}' | ...एक जावा प्रोग्राम को देखने के लिए कहा जाता है जिसे फू कहा जाता है।
कैस

0

आप एक शेल स्क्रिप्ट बना सकते हैं

#!/bin/bash
Total=`cat /proc/meminfo | head -n1 | awk '{print $2}'`
max_usage=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $1}'`
name=`ps ax -o pmem,fname | sort -r | head -n2 | tail -n1 | awk '{print $NF}'`
echo "$Total $max_usage $name"
echo "($max_usage*$Total)/(100*1024)" | bc

यह उच्चतम मेम उपयोग अनुप्रयोग देगा।


मैंने यह काम करने की कोशिश की है और इसने मुझे ब्याज देने वाले परिणाम नहीं दिए हैं। उदाहरण के लिए, यह केवल एक कार्यक्रम दिखाता है, और यह सबसे अधिक मेमोरी लेने वाला नहीं है
korda

क्या यह? वैसे आप को टॉप जैसी कोई चीज़ चाहिए ?? यदि हाँ, तो आप स्क्रिप्ट को 2 या 1 सेकंड की देरी से संशोधित कर सकते हैं और कुछ समय के लिए या उसी चीज़ को चला सकते हैं। मेरे लिए यह इस स्क्रिप्ट को चलाने के समय सबसे अधिक मेमोरी उपयोग अनुप्रयोग दिखाता है। आप किस तरह का सामान ले रहे हैं, बस चलाएं: ps af -o pmem, cmd | सॉर्ट -r यह आपको उच्चतम मेम उपयोग एप्लिकेशन देगा
राहुल

यह मेरे लिए काम नहीं कर रहा है। मुझे लगता है कि कारण यह है कि सॉर्ट में प्रमुख सफेद स्थान शामिल हैं
कोर्डा

आपका मतलब है कि आपको प्रक्रिया का सही नाम नहीं मिल रहा है ??
राहुल

हां, बीक्युस पीएस इंडेंट स्टफ में स्पेस जोड़ते हैं। जब एक प्रक्रिया में 2 अंकों का उपयोग होता है, तो एक अंक उपयोग मूल्य इंडेंट किया जाएगा और अग्रणी स्थान के साथ शुरू होगा। मुझे लगता है कि sed -e 's/^[[:space:]]*//'इसे ठीक करना चाहिए। क्या आपकी स्क्रिप्ट समान कमांड के साथ प्रक्रियाओं के मेमोरी उपयोग को जोड़ती है?
कोरडा

0

अंदर से ऊपर आप निम्नलिखित का उपयोग कर सकते हैं:

Press SHIFT+f
Press the Letter corresponding to %MEM
Press ENTER

आप भी कोशिश कर सकते हैं:

ps -eo pmem,pcpu,vsize,pid,cmd | sort -k 1 -nr | head -5

यह कमांड मेमोरी उपयोग द्वारा शीर्ष 5 प्रक्रियाएं देगा।

मुझे आशा है कि आपको यह जानकारी उपयोगी लगी होगी!


0

यह शर्तें के साथ सरल बनाया जा सकता है ।

ps -C chromium-browser -o pmem | termsql -1 "SELECT SUM([%MEM]) FROM tbl"

ध्यान दें, कि वर्तमान में यह PyPI पर अपलोड नहीं है , और इसे केवल सिस्टम-वाइड ( setup.pyथोड़ा टूटा हुआ) जैसे, स्थापित किया जा सकता है sudo pip install https://github.com/tobimensch/termsql/archive/master.zip

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.