Điều gì có thể thay thế giám sát hệ thống trong Bảng điều khiển Gnome hàng đầu trong Unity?


117

Tôi đã từng có hệ thống giám sát trong Bảng điều khiển Gnome hàng đầu: CPU, Nhiệt độ, Mạng, Tốc độ quạt. (xem ảnh chụp màn hình bên dưới)

ảnh chụp màn hình bảng điều khiển Gnome 2 hiển thị các applet màn hình hệ thống

Trong Unity, Bảng điều khiển hàng đầu bị khóa cho tên cửa sổ và menu toàn cầu, vì vậy tôi không thể thêm các applet của bảng điều khiển. Vì vậy, câu hỏi của tôi là:

Có cách nào để thay thế loại giám sát hệ thống này (luôn hiển thị, không chiếm nhiều dung lượng) trong Unity không?

Câu trả lời:


57

Chính xác như chỉ báo gnome cũ: http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more

Lưu ý từ liên kết: Sau khi cài đặt, khởi chạy Chỉ báo tải hệ thống từ Dash. Không giống như các applet gnome cũ, đây là cách thêm các chỉ số đó vào bảng điều khiển.


Lưu ý: chỉ báo đa tải và các loại khác hiện đang là tiêu chuẩn mà bạn không cần PPA. Để xem hướng dẫn, hãy xem: howtogeek.com/118908/ trộm
Tully

44

Tôi tìm thấy câu hỏi và câu trả lời sau đây đã giải quyết vấn đề cho tôi. Nó chứa một danh sách các thay thế cho các applet cũ được gọi là các chỉ số ứng dụng. Thật không may, không phải tất cả chúng đều có sẵn cho người mới, nhưng ít nhất tôi đã có một bộ theo dõi tải hệ thống rất cơ bản (chỉ báo sysmonitor) và một chỉ báo thời tiết (chỉ báo thời tiết) hoạt động.

nhập mô tả hình ảnh ở đây

Nhấn vào nút để cài đặt:

Cài đặt qua trung tâm phần mềm


20

Đây là một màn hình hệ thống nhanh và bẩn mà tôi đã hack cùng với python: thanh menu

Nó sử dụng "Chỉ báo màn hình hệ thống" ( ở đây ) để gọi tập lệnh mà tôi đã viết. Để dùng nó:

  1. cài đặt indicator-sysmonitor. Để làm điều đó, hãy chạy lệnh sau:

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
    
  2. sao chép tập lệnh dưới đây vào một tập tin gọi là sysmonitor

  3. làm cho tập lệnh thực thi ( chmod +x path-to-file)

  4. nhấp vào chỉ báo và chọn "Tùy chọn". Ví dụ cho thấy rằng

  5. chọn "sử dụng lệnh này" và cung cấp cho nó đường dẫn đến tệp sysmonitor.

đây là mã:

#!/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: nếu bạn muốn sử dụng bộ nhớ (như báo cáo của "top"), hãy thêm các dòng

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

Nếu bạn có phiên bản 2.0 của psutil thì bạn có thể sử dụng bộ nhớ theo báo cáo của Trình giám sát hệ thống Gnome với dòng sau:

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

Nếu bạn có ít không gian và bạn muốn có các đơn vị cho tốc độ mạng (b, k, M), bạn cũng có thể sử dụng đơn vị này

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)

cảm ơn James vì ​​định dạng và bước còn thiếu (apt-add-repository).
krumpelstiltskin

Bạn có thể vui lòng cho tôi biết làm thế nào tôi có thể nhận được% RAM thay vì sử dụng đĩa không?
Vijay

2
@neo: tạo một hàm phân tích cú pháp "/ Proc / meminfo" giống như hàm "getInOut ()" (các trường trong meminfo là tự giải thích). Sau đó gọi hàm mới của bạn với makeSample (). Nếu có nhu cầu này, tôi sẽ viết và đăng mã.
krumpelstiltskin

1
@neo: tôi đã thêm các dòng sử dụng bộ nhớ vào bài viết. Nếu việc sử dụng mem là tất cả những gì bạn muốn, tôi khuyên bạn nên xóa tất cả các dòng khác khỏi tập lệnh để python không phải phân tích chúng.
krumpelstiltskin

1
Tôi phát hiện ra điều tương tự và đã viết một tập lệnh Perl ngắn theo dõi việc sử dụng mạng.
Nathan Osman





3

Nó không nằm trong bảng điều khiển trên cùng, nhưng bạn có thể sử dụng Conky .

Tôi không sử dụng Conky, nhưng có một số chủ đề mỏng manh ngoài kia và tôi nghĩ bạn có thể làm cho nó luôn luôn đứng đầu. (Mặc dù tôi không biết phần nào của màn hình sẽ tốt để che ...)


+1 Tôi đã sử dụng Conky cho chính xác điều này (như là một thay thế applet màn hình hệ thống). Nó cực kỳ cấu hình, và có khả năng nó sẽ mất một số công việc để có được kết quả mong muốn. Đối với một số cấu hình đẹp và thú vị, tôi đã sử dụng một đề xuất trên webupd8.org
belacqua


-1

Tôi đã thử một vài ứng dụng và tôi thấy rằng ứng dụng trên KDE dành cho tôi công cụ giám sát hệ thống tốt nhất: ksysguard.

Nó nằm trong kho tiêu chuẩn của Ubuntu, vì vậy bạn chỉ cần cài đặt nó trong Trung tâm phần mềm.

Xem so sánh trong ảnh chụp màn hình này. Gnome System Monitor sử dụng bao nhiêu bộ xử lý so với KDE System Monitor (ksysguard)

Như bạn có thể thấy, ksysguard tốt hơn rất nhiều.


Điều đó có phù hợp trong bảng điều khiển?
Robert Siemer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.