我习惯于在顶部的Gnome面板上有系统监控:CPU、温度、网络、风扇速度。(见下方截图)
有没有办法在Unity中替换这种系统监控(始终可见,占用空间不多)?
有没有办法在Unity中替换这种系统监控(始终可见,占用空间不多)?
就像老的gnome指示器一样:http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more
来自链接的注意事项:安装完成后,从Dash启动系统负载指示器。与旧的gnome小程序不同,这是将这些指示器添加到面板的方法。
它使用“系统监视器指示器”(这里)来调用我编写的脚本。使用方法如下:
安装indicator-sysmonitor
。要做到这一点,请运行以下命令:
sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
将下面的脚本复制到一个名为sysmonitor的文件中
使脚本可执行(chmod +x path-to-file
)
点击指示器并选择“首选项”。
选择“使用此命令”,并给它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():
"""
从/proc/net/dev中获取字节的读取和写入。
"""
netfile = "/proc/net/dev"
try: f = open(netfile)
except:
sys.stderr.write("错误:无法打开"+netfile+"。\n")
sys.exit(2)
f.readline() #跳过顶部标题行。
f.readline() #跳过第二行标题。
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():
"""
从网络接口获取I/O的样本。
"""
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():
"""
diskstats_parse函数的包装器,只返回读取和写入。
"""
ds = diskstats_parse("sda")
return (ds["sda"]["writes"], ds["sda"]["reads"])
def sampleDisk():
"""
从磁盘获取I/O的样本。
"""
return makeSample(diskstatWrapper)
def diskstats_parse(dev=None):
"""
我在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
<p><strong>编辑</strong>:如果你想要内存使用情况(如"top"报告)添加以下行:</p>
<pre class="lang-py prettyprint-override"><code>memperc = int(100*float(psutil.used_phymem())/float(psutil.TOTAL_PHYMEM))
outstr += "mem: "+str(memperc)+"%\t"
memperc = int(100*float(psutil.used_phymem()-psutil.cached_phymem())/float(psutil.TOTAL_PHYMEM))
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)
您可以从https://launchpad.net/indicator-sysmonitor/+download这里下载并安装一个软件包(.deb)。安装完成后,您将在应用程序 > 附件 > 系统监视器指示器中找到它,并且在Unity界面中会显示如下图:
虽然它不在顶部面板上,但你可以使用Conky。
我不使用Conky,但有一些瘦身主题可供选择,我认为你可以将其始终置于顶层。(尽管我不知道屏幕的哪个部分适合覆盖...)