एकता में शीर्ष सूक्ति पैनल में सिस्टम मॉनिटरिंग को क्या बदल सकता है?


117

मैं शीर्ष गनोम पैनल में सिस्टम मॉनिटरिंग करने के लिए उपयोग किया जाता हूं: सीपीयू, तापमान, नेट, फैन-स्पीड। (नीचे स्क्रीनशॉट देखें)

ग्नोम 2 पैनल का स्क्रीनशॉट सिस्टम मॉनिटर एप्लेट दिखाता है

एकता में, शीर्ष पैनल खिड़की के नाम और वैश्विक मेनू के लिए बंद है, इसलिए मैं पैनल एप्लेट नहीं जोड़ सकता। तो मेरा सवाल है:

क्या एकता में इस तरह की सिस्टम मॉनिटरिंग (हमेशा दिखाई देने वाली, ज्यादा जगह नहीं लेना) को बदलने का एक तरीका है?

जवाबों:


57

बिल्कुल पुराने सूक्ति सूचक की तरह: http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more

लिंक से ध्यान दें: इंस्टॉल होने के बाद, डैश से सिस्टम लोड संकेतक लॉन्च करें। पुराने सूक्ति एप्लेट्स के विपरीत, यह है कि उन संकेतकों को पैनल में कैसे जोड़ा जाए।


नोट: संकेतक-मल्टीलोड और अन्य अब मानक हैं आपको पीपीए की आवश्यकता नहीं है। ट्यूटोरियल के लिए देखें: howtogeek.com/118908/…
Tully

44

मुझे निम्नलिखित प्रश्न और उत्तर मिले जिससे मेरे लिए समस्या हल हो गई। इसमें पुराने ऐपलेट्स के लिए प्रतिस्थापन की एक सूची है, जिसे एप्लिकेशन संकेतक कहा जाता है। दुर्भाग्य से उनमें से सभी अभी तक नैट्टी के लिए उपलब्ध नहीं हैं, लेकिन कम से कम मुझे एक बहुत ही बुनियादी सिस्टम लोड मॉनीटर (संकेतक-सिस्मोइनिटर) और एक मौसम संकेतक (संकेतक-मौसम) काम कर रहा है।

यहां छवि विवरण दर्ज करें

स्थापित करने के लिए बटन पर क्लिक करें:

सॉफ्टवेयर केंद्र के माध्यम से स्थापित करें


20

यहाँ एक त्वरित और गंदा सिस्टम मॉनिटर है जिसे मैंने अजगर से एक साथ हैक किया था: मेनू पट्टी

यह उस स्क्रिप्ट को कॉल करने के लिए "सिस्टम मॉनिटर इंडिकेटर" ( यहां ) का उपयोग करता है जो मैंने लिखा था। इसके प्रयेाग के लिए:

  1. स्थापित करें indicator-sysmonitor। ऐसा करने के लिए, निम्नलिखित कमांड चलाएँ:

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
    
  2. एक स्क्रिप्ट में नीचे दी गई स्क्रिप्ट को sysmonitor नाम से कॉपी करें

  3. स्क्रिप्ट को निष्पादन योग्य बनाएं ( chmod +x path-to-file)

  4. संकेतक पर क्लिक करें और "प्राथमिकताएं" चुनें। उदाहरण दिखा रहा है कि

  5. "इस कमांड का उपयोग करें" चुनें और इसे sysmonitor फ़ाइल का पथ दें।

यहाँ कोड है:

#!/usr/bin/python

import re
import sys
import time
import psutil





#Functions:_    __    __    __    __    __    __    __    __    __    __    __
#__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \_



#interface |bytes    packets errs drop fifo frame compressed multicast|bytes    packets errs drop fifo colls carrier compressed
net_re = re.compile(r"\s*\S+:\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+(\d+)\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+\d+\s+")

def getInOut():
  """
  Get a readout of bytes in and out from /proc/net/dev.
  """

  netfile = "/proc/net/dev"

  try: f = open(netfile)
  except:
    sys.stderr.write("ERROR: can't open "+netfile+".\n")
    sys.exit(2)

  f.readline()    #Burn the top header line.
  f.readline()    #Burn the second header line.

  inb = 0
  outb = 0
  for line in f:
    m = net_re.match(line)
    inb += int(m.group(1))
    outb += int(m.group(2))
  f.close()

  return (inb,outb)



def sampleNet():
  """
  Get a sample of I/O from the network interfaces.
  """
  return makeSample(getInOut)


def makeSample(function):
  inlist = list()
  outlist = list()

  (inbytes, outbytes) = function()
  inlist.append(inbytes)
  outlist.append(outbytes)
  time.sleep(1)

  (inbytes, outbytes) = function()
  inlist.append(inbytes)
  outlist.append(outbytes)

  return (inlist[1] - inlist[0], outlist[1] - outlist[0])



def diskstatWrapper():
  """
  Wrapper for the diskstats_parse function that returns just the in and out.
  """
  ds = diskstats_parse("sda")
  return (ds["sda"]["writes"], ds["sda"]["reads"])



def sampleDisk():
  """
  Get a sample of I/O from the disk.
  """
  return makeSample(diskstatWrapper)





def diskstats_parse(dev=None):
    """
    I found this on stackoverflow.
    (http://stackoverflow.com/questions/3329165/python-library-for-monitoring-proc-diskstats)
    """
    file_path = '/proc/diskstats'
    result = {}

    # ref: http://lxr.osuosl.org/source/Documentation/iostats.txt
    columns_disk = ['m', 'mm', 'dev', 'reads', 'rd_mrg', 'rd_sectors',
                    'ms_reading', 'writes', 'wr_mrg', 'wr_sectors',
                    'ms_writing', 'cur_ios', 'ms_doing_io', 'ms_weighted']

    columns_partition = ['m', 'mm', 'dev', 'reads', 'rd_sectors', 'writes', 'wr_sectors']

    lines = open(file_path, 'r').readlines()
    for line in lines:
        if line == '': continue
        split = line.split()
        if len(split) != len(columns_disk) and len(split) != len(columns_partition):
            # No match
            continue

        data = dict(zip(columns_disk, split))
        if dev != None and dev != data['dev']:
            continue
        for key in data:
            if key != 'dev':
                data[key] = int(data[key])
        result[data['dev']] = data

    return result





#MAIN:    __    __    __    __    __    __    __    __    __    __    __    __
#__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \__/  \_




(indiff, outdiff) = sampleNet()
outstr = ""
outstr += "cpu: "+str(int(psutil.cpu_percent()))+"%\t"
outstr += "net: "+str(indiff/1000)+"|"+str(outdiff/1000)+" K/s\t"

(diskin, diskout) = sampleDisk()
outstr += "disk: "
if(diskin):
  outstr += "+"
else:
  outstr += "o"
outstr += "|"
if(diskout):
  outstr += "+"
else:
  outstr += "o"

print outstr

संपादित करें: यदि आप मेमोरी उपयोग ("टॉप" द्वारा रिपोर्ट के रूप में) चाहते हैं तो लाइनें जोड़ें

memperc = int(100*float(psutil.used_phymem())/float(psutil.TOTAL_PHYMEM))
outstr += "mem: "+str(memperc)+"%\t"

यदि आपके पास psutil का संस्करण 2.0 है तो आप निम्नलिखित लाइन के साथ GNOME सिस्टम मॉनिटर द्वारा बताए अनुसार मेमोरी उपयोग प्राप्त कर सकते हैं:

memperc = int(100*float(psutil.used_phymem()-psutil.cached_phymem())/float(psutil.TOTAL_PHYMEM))

यदि आपके पास जगह कम है, और आप नेट स्पीड (b, k, M) के लिए इकाइयाँ रखना पसंद करते हैं, तो आप इसका भी उपयोग कर सकते हैं

def withUnit(v):
    if v<1024:
      return "%03d" % v+"b";
    if v<1024**2:
      s= ("%f" % (float(v)/1024))[:3];
      if s[-1]=='.':
         s=s[:-1]
      return s +"k";

    return ("%f" % (float(v)/(1024**2)))[:3] +"M";


(indiff, outdiff) = sampleNet()
outstr = ""
outstr += "c"+ "%02d" % int(psutil.cpu_percent())+" "
outstr += "m"+ "%02d" % int((100*float(psutil.used_phymem())/float(psutil.TOTAL_PHYMEM)))+" "

outstr += "d"+withUnit(indiff)+" u"+withUnit(outdiff)

प्रारूपण और लापता चरण (उपयुक्त-जोड़-रिपॉजिटरी) के लिए धन्यवाद जेम्स।
krumpelstiltskin

क्या आप मुझे बता सकते हैं कि मैं डिस्क उपयोग के बजाय RAM% कैसे प्राप्त कर सकता हूं?
विजय

2
@neo: एक ऐसा फंक्शन बनाते हैं, जो "getInOut ()" (मेमेन्फो में फ़ील्ड्स आत्म व्याख्यात्मक) कहलाता है जैसे "/ proc / meminfo" होता है। फिर MakeSample () के साथ अपने नए फ़ंक्शन को कॉल करें। अगर इसकी मांग है तो मैं कोड लिखूंगा और पोस्ट करूंगा।
krumpelstiltskin

1
@neo: मैंने पोस्ट में मेमोरी उपयोग के लिए लाइनें जोड़ी हैं। यदि मेम का उपयोग आप सभी चाहते हैं, तो मेरा सुझाव है कि आप स्क्रिप्ट से अन्य सभी लाइनों को हटा दें, इसलिए अजगर को उन्हें पार्स करने की आवश्यकता नहीं है।
krumpelstiltskin

1
मैंने एक ही चीज़ की खोज की और एक छोटी पर्ल स्क्रिप्ट लिखी जो नेटवर्क उपयोग की निगरानी करती है।
नाथन उस्मान

13

आप एक सॉफ्टवेयर पैकेज ( .deb ) से डाउनलोड और इंस्टॉल कर सकते हैं

https://launchpad.net/indicator-sysmonitor/+download यहाँ। एक बार स्थापित होने के बाद आप इसे एप्लिकेशन> एक्सेसरीज़> साइसीम मॉनिटर इंडिकेटर के तहत पाएंगे और यह यूनिटी में इस तरह दिखेगा; यहां छवि विवरण दर्ज करें





3

यह शीर्ष पैनल में नहीं है, लेकिन आप कॉन्की का उपयोग कर सकते हैं ।

मैं Conky का उपयोग नहीं करता, लेकिन वहाँ कुछ पतले विषय हैं और मुझे लगता है कि आप इसे हमेशा शीर्ष पर बना सकते हैं। (हालांकि मुझे नहीं पता कि स्क्रीन के किस हिस्से को कवर करना अच्छा होगा ...)


+1 मैं बिल्कुल इसके लिए Conky का उपयोग कर रहा हूं (सिस्टम मॉनिटर एप्लेट रिप्लेसमेंट के रूप में)। यह अत्यंत विन्यास योग्य है, और यह संभावना है कि वांछित परिणाम प्राप्त करने में कुछ काम लगेगा। कुछ अच्छे दिखने वाले और दिलचस्प कॉन्फिग्स के लिए
belacqua


-1

मैंने कुछ एप्लिकेशन आज़माए और मैंने पाया कि केडीई में से एक मेरे लिए सबसे अच्छा सिस्टम मॉनिटर टूल है: ksysguard।

यह उबंटू मानक रिपॉजिटरी में है, इसलिए आप इसे सॉफ्टवेयर सेंटर में स्थापित करते हैं।

इस स्क्रीनशॉट में तुलना देखें। कितना प्रोसेसर Gnome सिस्टम मॉनिटर KDE सिस्टम मॉनिटर (ksysguard) का उपयोग करता है

जैसा कि आप देख सकते हैं, ksysguard बहुत बेहतर है।


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