118 votes

Sur l'unité : Qu'est-ce qui peut remplacer la surveillance du système de Gnome 2 dans le panneau supérieur ?

J'ai l'habitude d'avoir la surveillance du système dans le panneau supérieur de Gnome : CPU, température, réseau, vitesse du ventilateur. (voir la capture d'écran ci-dessous)

screenshot of Gnome 2 panel showing the system monitor applets

Dans Unity, le panneau supérieur est verrouillé pour le nom de la fenêtre et le menu global, je ne peux donc pas ajouter d'applets de panneau. Ma question est donc la suivante :

Existe-t-il un moyen de remplacer ce type de surveillance du système (toujours visible, ne prenant pas beaucoup de place) dans Unity ?

57voto

zarej Points 594

Exactement comme le vieil indicateur de gnome : http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more

Note du lien : Une fois installé, lancez System Load Indicator à partir de Dash. Contrairement aux anciennes applets gnome, voici comment ajouter ces indicateurs au panneau.

44voto

PRINCESS FLUFF Points 2072

J'ai trouvé la question et la réponse suivantes qui ont résolu le problème pour moi. Elle contient une liste de remplacements des anciennes applets appelés indicateurs d'application. Malheureusement, ils ne sont pas encore tous disponibles pour natty, mais au moins j'ai réussi à faire fonctionner un moniteur de charge système très basique (indicator-sysmonitor) et un indicateur météo (indicator-weather).

enter image description here

Cliquez sur le bouton pour installer :

Install via the software center

20voto

krumpelstiltskin Points 2398

Voici un moniteur système rapide et sale que j'ai bricolé en Python :

menubar

Il utilise le "System Monitor Indicator" ( aquí ) pour appeler le script que j'ai écrit. Pour l'utiliser :

  1. installer indicator-sysmonitor . Pour ce faire, exécutez la commande suivante :

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
  2. copier le script ci-dessous dans un fichier appelé sysmonitor

  3. rendre le script exécutable ( chmod +x path-to-file )

  4. cliquez sur l'indicateur et choisissez "Préférences".

    Example showing that

  5. choisissez "utiliser cette commande" et donnez-lui le chemin vers le fichier sysmonitor.

    Voici le code :

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

EDIT si vous voulez l'utilisation de la mémoire (comme indiqué par "top"), ajoutez les lignes suivantes

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

Si vous avez la version 2.0 de psutil, vous pouvez obtenir l'utilisation de la mémoire telle que rapportée par le moniteur système GNOME avec la ligne suivante :

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

Si vous avez peu de place, et que vous préférez avoir des unités pour la vitesse nette (b, k, M), vous pouvez également utiliser ceci

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)

13voto

scouser73 Points 4316

Vous pouvez télécharger et installer un logiciel ( .deb ) de

https://launchpad.net/indicator-sysmonitor/+téléchargement ici. Une fois installé, vous le trouverez sous Applications > Accessoires > Indicateur de moniteur Sysyem et ça ressemblera à ça dans Unity ; enter image description here

5voto

nortalf Points 51

Mon point de vue sur le problème : https://gist.github.com/982939

Capture d'écran :

enter image description here

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X