Я привык иметь системный мониторинг в верхней панели Gnome: CPU, Temperature, Net, Fan-Speed. (см. скриншот ниже)
В Unity верхняя панель заблокирована для имени окна и глобального меню, поэтому я не могу добавлять апплеты панели. Итак, мой вопрос:
Есть ли способ заменить этот вид системного мониторинга (всегда видимый, занимающий мало места) в Unity?
Точно так же, как старый индикатор gnome: http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more
Примечание по ссылке: После установки запустите System Load Indicator из Dash. В отличие от старых апплетов gnome, так можно добавлять эти индикаторы на панель.
Я нашел следующий вопрос и ответ, который решил для меня эту проблему. Он содержит список замен старых апплетов, называемых индикаторами приложений. К сожалению, пока не все из них доступны для natty, но, по крайней мере, у меня заработал очень простой монитор загрузки системы (индикатор-синмонитор) и индикатор погоды (индикатор-погода)
Нажмите кнопку установки:
Моя версия проблемы: https://gist.github.com/982939
Скриншот:
Вот быстрый и грязный системный монитор, который я взломал вместе из питона:
Он использует "Индикатор системного монитора" ( здесь) для вызова сценария, который я написал. Для его использования:
установите индикатор-симмонитор
. Для этого выполните следующую команду:
sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-установить индикатор-синхронизатор
скопируйте скрипт ниже в файл sysmonitor
сделайте его исполняемым (chmod +x path-to-file
)
щелкните на индикаторе и выберите "Preferences".
выберите "use this command" и укажите ему путь к файлу sysmonitor.
Вот код:
#!/usr/bin/python
импорт ре
импортные системы
время импорта
импортный мешок
#Functions:_ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ___
#__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \_
#интерфейс |bytes пакеты сбрасываются в сжатом виде multicast|bytes пакеты сбрасываются в сжатом виде в виде колонн носителя
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 и из /proc/net/dev.
"""
netfile = "/proc/net/dev".
try: f = open(netfile)
за исключением того:
sys.stderr.write("ERROR: не может открыть "+нет-файл+".\n")).
системный выход(2)
f.readline() #Сожгите строку верхнего заголовка.
f.readline() #Сожгите вторую строку заголовка.
inb = 0
аутб = 0
для очереди на f:
m = net_re.match(line)
inb += int(m.group(1))
outb += int(m.group(2))
f.close()
вернуться (вход, выход)
Def sampleNet():
"""
Получите образец входов/выходов от сетевых интерфейсов.
"""
вернуть makeSample(getInOut)
def makeSample(function):
inlist = list()
outlist = list()
(инбайты, аутбайты) = function()
inlist.append(inbytes)
outlist.append(outbytes)
время.сна(1)
(инбайты, аутбайты) = function()
inlist.append(inbytes)
outlist.append(outbytes)
return (inlist[1] - inlist[0], outlist[1] - outlist[0])
def diskstatWrapper():
"""
Обертка для функции diskstats_parse, которая возвращает только вход и выход.
"""
ds = diskstats_parse("sda")
возвращать (ds["sda"]["пишет"], ds["sda"]["читает"]])
def sampleDisk():
"""
Получите образец входов/выходов с диска.
"""
вернуть makeSample(diskstatWrapper)
def diskstats_parse(dev=None):
"""
Я нашел это на переполнении стека.
(http://stackoverflow.com/questions/3329165/python-library-for-monitoring-proc-diskstats)
"""
file_path = '/proc/diskstats'.
результат = {}
# 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()
для очереди в очереди:
if line == '': continue
split = line.split()
если len(split) != len(columns_disk) и len(split) != len(columns_partition):
# совпадений нет
продолжить работу по адресу
data = dict(zip(columns_disk, split)))
если Дэв!= Нет и Дэв!= data['dev']:
продолжить
за ключом к данным:
if key != 'dev':
data[key] = int(data[key]))
result[data['dev']] = данные
результат возврата
#MAIN: __ __ __ __ __ __ __ __ __ __ __ __ __ __ __ ___
#__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \__/ \_
(indiff, outdiff) = sampleNet()
превышение = ""
outstr += "cpu: "+str(int(psutil.cpu_percent()))+"%\t".
outstr += "net": "+str(indiff/1000)+"|"+str(outdiff/1000)+" K/s\t"
(дискин, дискаут) = sampleDisk()
outstr +="диск: "
если (дискин):
превышение += "+"
Иначе:
превышение +="о"
outstr += "|"
if(дискаут):
превышение += "+"
Иначе:
превышение +="о"
превышение печати
EDIT: если Вы хотите использовать память (как отчет "сверху"), добавьте строки
memperc = int(100*float(psutil.used_phymem())/float(psutil.TOTAL_PHYMEM))
outstr += "mem: "+str(memperc)+"%\t"
, если у Вас есть версия 2. 0 из psutil, то вы можете получить информацию об использовании памяти, как сообщает GNOME System Monitor со следующей строкой:
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)
Вы можете скачать и установить программный пакет (.deb) с
https://launchpad.net/indicator-sysmonitor/+download здесь. После установки вы найдете его в разделе Приложения > Аксессуары > Sysyem Monitor Indicator и он будет выглядеть так в Unity;
Есть кто-то, кто работает с аппаратными датчиками для индикатора-апплета. Смотрите Есть ли аппаратный датчик температуры индикатора?
Можно установить порт индикатора монитора системы гномов: https://launchpad.net/~индикатор-мультизагрузка/+архив/стабилизация-дневно
Его нет в верхней панели, но вы можете использовать Conky.
Я не использую Conky, но есть некоторые тонкие темы, и я думаю, что вы можете сделать его всегда на вершине. (Хотя я не знаю, какую часть экрана было бы неплохо закрыть...)
Я думаю, что пока это будет наиболее близко. Монитор процессора
Я попробовал несколько приложений и обнаружил, что одно из KDE - для меня лучший инструмент для мониторинга системы: ksysguard.
Он находится в стандартных репозиториях Ubuntu, так что вы просто установите его в Центре программного обеспечения.
См. сравнение на этом снимке экрана.
Как видите, ksysguard намного лучше.