Unity'nin en üst Gnome Panelindeki sistem izlemenin yerini ne alabilir?


117

Gnome Panel'de Sistem izlemeye alıştım: CPU, Sıcaklık, Net, Fan Hızı. (aşağıdaki ekran görüntüsüne bakın)

sistem monitörü uygulamalarını gösteren Gnome 2 panelinin ekran görüntüsü

Birlik'te, Üst Panel pencere adı ve genel menü için kilitli olduğundan panel uygulamaları ekleyemiyorum. Yani sorum şu:

Birlik'te bu tür sistem izlemenin (her zaman görünür, fazla yer kaplamayan) yerini almanın bir yolu var mı?

Yanıtlar:



44

Aşağıdaki soruyu buldum ve cevabı benim için çözdü. Uygulama göstergeleri adı verilen eski uygulamalar için değiştirmelerin bir listesini içerir. Maalesef bunların hepsi henüz natty için mevcut değil, ama en azından çok temel bir sistem yük monitörü (gösterge-sismonitor) ve bir hava durumu göstergesi (gösterge-hava) çalışıyor.

görüntü tanımını buraya girin

Yüklemek için düğmeye tıklayın:

Yazılım merkezi üzerinden kurun


20

İşte python dışında bir araya getirdiğim hızlı ve kirli sistem monitörü Menü çubuğu

Yazdığım betiği çağırmak için " burada Sistem İzleyicisi Göstergesi" ni ( burada ) kullanır. Kullanmak için:

  1. yükleyin indicator-sysmonitor. Bunu yapmak için aşağıdaki komutu çalıştırın:

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
    
  2. aşağıdaki betiği sysmonitor adlı bir dosyaya kopyalayın

  3. betiği çalıştırılabilir yap ( chmod +x path-to-file)

  4. Göstergeye tıklayın ve "Tercihler" i seçin. Bunu gösteren örnek

  5. "bu komutu kullan" ı seçin ve ona sysmonitor dosyasının yolunu verin.

İşte kod:

#!/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

DÜZENLEME: bellek kullanımı istiyorsanız ("üst" tarafından rapor edildiği gibi) satırları ekleyin.

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

Eğer psutil'in 2.0 versiyonuna sahipseniz, GNOME Sistem Monitörü tarafından bildirildiği şekilde bellek kullanımını aşağıdaki satırdan alabilirsiniz:

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

Eğer az yeriniz varsa ve net hız için birimlere sahip olmayı tercih ediyorsanız (b, k, M) bunu da kullanabilirsiniz.

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)

biçimlendirme ve eksik adım (apt-add-repository) için teşekkürler James.
krumpelstiltskin

Lütfen bana disk kullanımı yerine% RAM’i nasıl alabileceğimi söyler misiniz?
Vijay

2
@neo: "/ proc / meminfo" yu "getInOut ()" (meminfo'daki alanlar kendi kendini açıklar niteliktedir) gibi ayrıştıran bir işlev yapın. Sonra yeni fonksiyonunuzu makeSample () ile çağırın. Bunun için talep varsa kodu yazıp gönderirim.
krumpelstiltskin

1
@neo: yazıya bellek kullanımı için satırları ekledim. mem kullanımı tüm istediğinse, betiğin diğer tüm satırlarını komut dosyasından kaldırmanı öneririm, böylece python bunları ayrıştırmak zorunda kalmaz.
krumpelstiltskin

1
Aynı şeyi keşfettim ve ağ kullanımını izleyen kısa bir Perl betiği yazdım.
Nathan Osman





3

Üst panelde yok ama Conky kullanabilirsiniz .

Conky kullanmıyorum, ama orada bazı ince temalar var ve her zaman üstesinden gelebileceğini düşünüyorum. (Her ne kadar ekranın hangi kısmının gizleneceğini bilmesem de ...)


+1 Bunun için tam olarak Conky kullanıyorum (bir sistem monitörü uygulamasının değiştirilmesi için). Son derece yapılandırılabilir ve istenen sonucu elde etmek için biraz çalışma gerekmesi muhtemel. Bazı güzel ve ilginç yapılandırmalar için, webupd8.org
belacqua'da


-1

Birkaç uygulama denedim ve KDE'de olanın benim için en iyi sistem izleme aracı olduğunu öğrendim: ksysguard.

Ubuntu standart depolarındadır, bu yüzden onu Yazılım Merkezine kuruyorsunuz.

Bu ekran görüntüsündeki karşılaştırmaya bakın. Gnome Sistem Monitörü ne kadar işlemci kullanır KDE Sistem Monitörü (ksysguard)

Gördüğünüz gibi, ksysguard çok daha iyi.


Panele sığıyor mu?
Robert Siemer,
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.