คุณอาจต้องการที่จะลองSysMon แม้ว่าจะไม่แฟนซีเท่า Glances แต่ก็ตรงไปตรงมาและใช้งานง่าย
หากคุณต้องการสกปรกและใช้สคริปต์เล็ก ๆ ใน python นี่เป็นพื้นฐานของการตรวจสอบระบบด้วย Python เพื่อให้คุณเริ่มต้นได้
คุณจะต้องมีโมดูลภายนอกที่เรียกว่าpsutil
เพื่อตรวจสอบสิ่งต่าง ๆ ส่วนใหญ่ เป็นการง่ายที่สุดที่จะใช้ตัวติดตั้งโมดูลภายนอกแทนที่จะสร้างจากแหล่งที่มา
หมายเหตุ: ตัวอย่างเหล่านี้เขียนขึ้นใน Python 2.7
sudo apt-get install pip
sudo pip install psutil
ตอนนี้เราได้ติดตั้งโมดูลแล้วเราสามารถเริ่มเขียนโค้ดได้
usage.py
ขั้นแรกให้สร้างไฟล์ที่เรียกว่า
gedit ~/usage.py
เริ่มต้นด้วยการนำเข้า psutil
import psutil
จากนั้นสร้างฟังก์ชั่นเพื่อตรวจสอบเปอร์เซ็นต์คอร์ CPU ของคุณทำงาน
def cpu_perc():
cpu_perc = psutil.cpu_percent(interval=1, percpu=True)
for i in range(len(cpu_perc)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
เรามาทำลายมันกันหน่อยสิ
บรรทัดแรกcpu_num = psutil.cpu_percent(interval=1, percpu=True)
พบว่าเปอร์เซ็นต์ที่แกนใน CPU cpu_perc
ของคุณจะทำงานที่และกำหนดไปยังรายการที่เรียกว่า
วงนี้ตรงนี้
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
ใช้สำหรับลูปที่พิมพ์เปอร์เซ็นต์ปัจจุบันของแต่ละคอร์ CPU ของคุณ
เพิ่มการใช้ RAM กันเถอะ
ram_perc
สร้างฟังก์ชั่นที่เรียกว่า
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
ให้ชุดข้อมูลที่มีข้อเท็จจริงต่าง ๆ เกี่ยวกับ RAM ในคอมพิวเตอร์ของคุณ
ถัดไปคุณสามารถเพิ่มข้อเท็จจริงบางอย่างเกี่ยวกับเครือข่ายของคุณ
def net():
net = psutil.net_io_counters()
mbytes_sent = float(net.bytes_sent) / 1048576
mbytes_recv = float(net.bytes_recv) / 1048576
print "MB sent: ", mbytes_sent
print "MB received: ", mbytes_recv
เนื่องจากpsutil.net_io_counters()
ให้ข้อมูลเกี่ยวกับแพ็คเก็ตที่ส่งและรับเป็นไบต์เท่านั้นจึงจำเป็นต้องทำการแปลงบางอย่าง
ในการรับข้อมูลบางอย่างเกี่ยวกับพื้นที่สว็อปให้เพิ่มฟังก์ชั่นนี้
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
อันนี้ค่อนข้างตรงไปตรงมา
อุณหภูมิเป็นเรื่องยากที่จะทำดังนั้นคุณอาจต้องทำวิจัยของคุณเองเพื่อหาว่าอะไรจะทำงานกับฮาร์ดแวร์ของคุณ คุณจะต้องแสดงเนื้อหาของไฟล์บางไฟล์
การใช้ดิสก์นั้นง่ายกว่าอุณหภูมิมาก สิ่งที่คุณต้องทำคือส่งดิสก์ที่คุณต้องการตรวจสอบ (เช่น:) /
ผ่านฟังก์ชั่นบางอย่าง
def disks():
if len(sys.argv) > 1:
for disk in range(1, len(sys.argv)):
tmp = psutil.disk_usage(sys.argv[disk])
print sys.argv[disk], "\n"
print "Megabytes total: ",
print str(float(tmp.total) / 1048576)
print "Megabytes used: ",
print str(float(tmp.used) / 1048576)
print "Megabytes free: ",
print str(float(tmp.free) / 1048576)
print "Percentage used: ",
print tmp.percent, "\n"
ผลลัพธ์ดั้งเดิมของpsutil.disk_usage
นี่คือ
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
แต่คุณยังสามารถได้รับเพียงtotal
, used
, หรือfree
percent
โปรแกรมที่เสร็จสมบูรณ์: (ฟังก์ชั่นดังกล่าวรวมกันแล้ว)
import psutil, os, sys
mem_perc = 0 #init var
swap_perc = 0 #init var
mbytes_sent = 0 #init var
mbytes_recv = 0 #init var
cpu_perc = 0 #init var
swap = 0 #init var
mem = 0 #init var
net = 0 #init var
def disp(degree):
global cpu_perc
global swap
global swap_perc
global mem
global mem_perc
global net
global mbytes_sent
global mbytes_recv
cpu_perc = psutil.cpu_percent(interval=1, percpu=True)
swap = psutil.swap_memory()
swap_perc = swap.percent
mem = psutil.virtual_memory()
mem_perc = mem.percent
net = psutil.net_io_counters()
mbytes_sent = float(net.bytes_sent) / 1048576
mbytes_recv = float(net.bytes_recv) / 1048576
os.system('clear') #clear the screen
print "-"*30
print "CPU"
print "-"*30
print "CPU Temperature: " , degree, "'C"
for i in range(len(cpu_perc)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
print "-"*30
print "MEMORY"
print "-"*30
print "RAM: ", mem_perc, "%"
print "Swap: ", swap_perc, "%"
print "-"*30
print "NETWORK"
print "-"*30
print "MB sent: ", mbytes_sent
print "MB received: ", mbytes_recv
print "-"*30
print "DISKS"
print "-"*30
if len(sys.argv) > 1:
for disk in range(1, len(sys.argv)):
tmp = psutil.disk_usage(sys.argv[disk])
print sys.argv[disk], "\n"
print "Megabytes total: ",
print str(float(tmp.total) / 1048576)
print "Megabytes used: ",
print str(float(tmp.used) / 1048576)
print "Megabytes free: ",
print str(float(tmp.free) / 1048576)
print "Percentage used: ",
print tmp.percent, "\n"
def main():
print("Press Ctrl+C to exit")
while True:
temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
temp = float(temp) / 1000
disp(temp)
main()
บรรทัดtemp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
อาจไม่ทำงานกับการกำหนดค่าฮาร์ดแวร์ของคุณ
เรียกใช้โปรแกรมนี้จากบรรทัดคำสั่ง ผ่านดิสก์ที่คุณต้องการมอนิเตอร์เป็นอาร์กิวเมนต์จากบรรทัดคำสั่ง
$ python usage.py /
Press Ctrl+C to exit
------------------------------
CPU
------------------------------
CPU Temperature: 39.0 'C
CPU Core 1 : 4.8 %
CPU Core 2 : 1.0 %
CPU Core 3 : 0.0 %
CPU Core 4 : 4.9 %
------------------------------
MEMORY
------------------------------
RAM: 33.6 %
Swap: 6.4 %
------------------------------
NETWORK
------------------------------
MB sent: 2.93382358551
MB received: 17.2131490707
------------------------------
DISKS
------------------------------
/
Megabytes total: 13952.484375
Megabytes used: 8542.6640625
Megabytes free: 4678.5703125
Percentage used: 61.2
/media/calvin/Data
Megabytes total: 326810.996094
Megabytes used: 57536.953125
Megabytes free: 269274.042969
Percentage used: 17.6
หวังว่านี่จะช่วยได้! แสดงความคิดเห็นหากคุณมีคำถามใด ๆ
https://github.com/calthecoder/sysmon-1.0.1