在 Unity 上:什么可以替代顶部面板中的 Gnome 2 系统监控?

tob*_*obi 118 panel indicator unity gnome-panel system-monitor

我习惯于在顶部 Gnome 面板中进行系统监控:CPU、温度、网络、风扇速度。(见下面的截图)

显示系统监视器小程序的 Gnome 2 面板的屏幕截图

在 Unity 中,顶部面板针对窗口名称和全局菜单被锁定,因此我无法添加面板小程序。所以我的问题是:

有没有办法在 Unity 中替换这种系统监控(始终可见,占用空间不大)?

小智 57

就像旧的 gnome 指示器:http : //www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more

链接中的注意事项:安装后,从 Dash 启动 System Load Indicator。与旧的 gnome 小程序不同,这是将这些指示器添加到面板的方法。


Leo*_*Leo 44

我发现以下问题和答案为我解决了问题。它包含一个称为应用程序指示器的旧小程序的替换列表。不幸的是,并非所有这些都可用于整洁,但至少我有一个非常基本的系统负载监视器(indicator-sysmonitor)和一个天气指示器(indicator-weather)工作。

在此处输入图片说明

点击按钮安装:

通过软件中心安装


kru*_*kin 20

这是我用 python 编写的一个快速而肮脏的系统监视器:

菜单栏

它使用“系统监视器指示器”(此处)来调用我编写的脚本。要使用它:

  1. 安装indicator-sysmonitor。为此,请运行以下命令:

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将下面的脚本复制到一个名为 sysmonitor 的文件中

  3. 使脚本可执行 ( chmod +x path-to-file)

  4. 单击指示器并选择“首选项”。

    示例表明

  5. 选择“使用此命令”并为其指定 sysmonitor 文件的路径。

    这是代码:

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
    
    Run Code Online (Sandbox Code Playgroud)

编辑:如果你想要内存使用情况(如“top”的报告)添加行

#!/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
Run Code Online (Sandbox Code Playgroud)

如果您有 2.0 版的 psutil,那么您可以使用以下行获取 GNOME 系统监视器报告的内存使用情况:

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

如果您的空间很小,并且您更喜欢使用净速度 (b, k, M) 的单位,您也可以使用它

memperc = int(100*float(psutil.used_phymem()-psutil.cached_phymem())/float(psutil.TOTAL_PHYMEM))
Run Code Online (Sandbox Code Playgroud)

  • @neo:制作一个解析“/proc/meminfo”的函数,就像一个叫做“getInOut()”的函数(meminfo 中的字段是自我解释的)。然后使用 makeSample() 调用您的新函数。如果对此有需求,我将编写并发布代码。 (2认同)

sco*_*r73 13

您可以从以下位置下载并安装软件包 ( .deb )

https://launchpad.net/indicator-sysmonitor/+download在这里。安装后,您将在Applications > Accessories > Sysyem Monitor Indicator下找到它,它在 Unity 中看起来像这样; 在此处输入图片说明


小智 5

我对这个问题的看法:https : //gist.github.com/982939

截屏:

在此处输入图片说明