สิ่งที่สามารถแทนที่การตรวจสอบระบบในแผงบน Gnome ใน Unity


117

ฉันเคยมีการตรวจสอบระบบในแผง Gnome ด้านบน: CPU, อุณหภูมิ, Net, ความเร็วพัดลม (ดูภาพหน้าจอด้านล่าง)

สกรีนช็อตของแผง Gnome 2 ที่แสดงแอปเพล็ตการตรวจสอบระบบ

ใน Unity แผงด้านบนถูกล็อคสำหรับชื่อหน้าต่างและเมนูส่วนกลางดังนั้นฉันจึงไม่สามารถเพิ่มแอปเพล็ตพาเนลได้ ดังนั้นคำถามของฉันคือ:

มีวิธีในการแทนที่การตรวจสอบระบบประเภทนี้ (มองเห็นได้เสมอและใช้พื้นที่ไม่มาก) ใน Unity หรือไม่

คำตอบ:


57

เหมือนกับตัวบ่งชี้ gnome อย่างแท้จริง: http://www.webupd8.org/2011/05/network-memory-and-cpu-usage-indicator.html#more

หมายเหตุจากลิงค์: เมื่อติดตั้งแล้วให้เปิดตัวบ่งชี้โหลดระบบจาก Dash ต่างจาก gnome applets แบบเก่านี่คือวิธีเพิ่มตัวบ่งชี้เหล่านั้นลงในพาเนล


หมายเหตุ: ตัวบ่งชี้มัลติโหลดและอื่น ๆ เป็นมาตรฐานที่คุณไม่ต้องการ PPA สำหรับบทช่วยสอนดูได้ที่: howtogeek.com/118908/…
Tully

44

ฉันพบคำถามต่อไปนี้และคำตอบที่แก้ไขปัญหาให้ฉันได้ มันมีรายการของการแทนที่แอปเพล็ตเก่าที่เรียกว่าตัวบ่งชี้แอปพลิเคชัน แต่น่าเสียดายที่บางตัวยังไม่พร้อมใช้งานสำหรับ natty แต่อย่างน้อยฉันก็มีระบบตรวจสอบโหลดระบบพื้นฐาน (ตัวบ่งชี้ sysmonitor) และตัวบ่งชี้สภาพอากาศ

ป้อนคำอธิบายรูปภาพที่นี่

คลิกที่ปุ่มเพื่อติดตั้ง:

ติดตั้งผ่านศูนย์ซอฟต์แวร์


20

นี่คือการตรวจสอบระบบที่รวดเร็วและสกปรกที่ฉันแฮ็คเข้าด้วยกันจากงูหลาม: แถบเมนู

มันใช้ "ตัวบ่งชี้การตรวจสอบระบบ" ( ที่นี่ ) เพื่อเรียกสคริปต์ที่ฉันเขียน วิธีใช้:

  1. indicator-sysmonitorติดตั้ง หากต้องการทำเช่นนั้นให้เรียกใช้คำสั่งต่อไปนี้:

    sudo apt-add-repository ppa:alexeftimie/ppa && sudo apt-get update && sudo apt-get install indicator-sysmonitor
    
  2. คัดลอกสคริปต์ด้านล่างลงในไฟล์ชื่อ sysmonitor

  3. ทำให้สคริปต์ปฏิบัติการ ( chmod +x path-to-file)

  4. คลิกที่ตัวบ่งชี้และเลือก "การตั้งค่า" ตัวอย่างแสดงให้เห็นว่า

  5. เลือก "ใช้คำสั่งนี้" และกำหนดพา ธ ไปยังไฟล์ 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():
  """
  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

แก้ไข: ถ้าคุณต้องการใช้หน่วยความจำ (ตามรายงานโดย "top") เพิ่มบรรทัด

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

ถ้าคุณมี psutil รุ่น 2.0 คุณสามารถรับการใช้หน่วยความจำตามที่รายงานโดย 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)

ขอบคุณ James สำหรับการจัดรูปแบบและขั้นตอนที่ขาดหายไป (apt-add-repository)
krumpelstiltskin

คุณช่วยบอกฉันได้อย่างไรว่าฉันจะได้รับ RAM% แทนการใช้ดิสก์ได้อย่างไร
วีเจย์

2
@neo: สร้างฟังก์ชันที่แยกวิเคราะห์ "/ proc / meminfo" คล้ายกับที่เรียกว่า "getInOut ()" (ช่องใน meminfo นั้นอธิบายด้วยตนเอง) จากนั้นเรียกใช้ฟังก์ชันใหม่ของคุณด้วย makeSample () หากมีความต้องการนี้ฉันจะเขียนและโพสต์รหัส
krumpelstiltskin

1
@neo: ฉันเพิ่มบรรทัดสำหรับการใช้หน่วยความจำในโพสต์ หากการใช้ mem นั้นเป็นสิ่งที่คุณต้องการฉันแนะนำให้คุณลบบรรทัดอื่น ๆ ออกจากสคริปต์เพื่อให้ python ไม่ต้องวิเคราะห์คำเหล่านั้น
krumpelstiltskin

1
ฉันค้นพบสิ่งเดียวกันและเขียนสคริปต์ Perl สั้น ๆ ที่ตรวจสอบการใช้เครือข่าย
Nathan Osman

13

คุณสามารถดาวน์โหลดและติดตั้งแพคเกจซอฟต์แวร์ ( .deb ) ได้

https://launchpad.net/indicator-sysmonitor/+downloadที่นี่ เมื่อติดตั้งแล้วคุณจะพบว่าภายใต้แอปพลิเคชั่น> อุปกรณ์เสริม> ตัวบ่งชี้การตรวจสอบ Sysyemและมันจะมีลักษณะเช่นนี้ใน Unity; ป้อนคำอธิบายรูปภาพที่นี่





3

มันไม่ได้อยู่ในแผงด้านบน แต่คุณสามารถใช้Conkyได้

ฉันไม่ได้ใช้ Conky แต่มีบางธีมที่ออกมาที่นั่นและฉันคิดว่าคุณสามารถทำให้มันอยู่ด้านบนเสมอ (แม้ว่าฉันจะไม่รู้ว่าส่วนใดของหน้าจอจะเป็นสิ่งที่ดีที่จะครอบคลุม ... )


+1 ฉันใช้ Conky กับสิ่งนี้อย่างแน่นอน (เป็นการแทนที่แอปเพล็ตการตรวจสอบระบบ) มันสามารถกำหนดค่าได้อย่างมากและมีแนวโน้มว่าจะต้องใช้เวลาสักพักเพื่อให้ได้ผลลัพธ์ที่ต้องการ สำหรับการกำหนดค่าที่ดูดีและน่าสนใจฉันได้ใช้สิ่งที่แนะนำบน webupd8.org
belacqua


-1

ฉันลองใช้งานแอปพลิเคชั่นสองสามตัวและพบว่าหนึ่งใน KDE สำหรับฉันคือเครื่องมือตรวจสอบระบบที่ดีที่สุด: ksysguard

มันอยู่ในที่เก็บมาตรฐานของ Ubuntu ดังนั้นคุณเพียงแค่ติดตั้งใน Software Center

ดูการเปรียบเทียบในภาพหน้าจอนี้ Gnome System Monitor ใช้หน่วยประมวลผลเท่าไหร่เทียบกับ KDE System Monitor (ksysguard)

อย่างที่คุณเห็น ksysguard นั้นดีกว่ามาก


มันพอดีกับแผงไหม?
Robert Siemer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.