Bạn có thể muốn thử sysmon . Mặc dù không lạ mắt như Glances, nhưng nó rất đơn giản và dễ sử dụng.
Nếu bạn muốn làm bẩn và thực hiện một chút kịch bản trong python, đây là một số điều cơ bản về giám sát hệ thống với Python để giúp bạn bắt đầu.
Bạn sẽ cần một mô-đun bên ngoài được gọi psutil
để giám sát hầu hết mọi thứ. Dễ dàng nhất để sử dụng trình cài đặt mô-đun bên ngoài thay vì xây dựng từ nguồn.
Lưu ý: Những ví dụ này được viết bằng Python 2.7
sudo apt-get install pip
sudo pip install psutil
Bây giờ chúng ta đã cài đặt các mô-đun, chúng ta có thể bắt đầu mã hóa.
Đầu tiên, tạo một tập tin gọi là usage.py
.
gedit ~/usage.py
Bắt đầu bằng cách nhập psutil
import psutil
Sau đó, tạo một chức năng để theo dõi tỷ lệ phần trăm lõi CPU của bạn đang chạy.
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]), "%"
Chúng ta hãy phá vỡ nó một chút, phải không?
Dòng đầu tiên cpu_num = psutil.cpu_percent(interval=1, percpu=True)
, tìm tỷ lệ phần trăm mà các lõi trong CPU của bạn đang chạy và gán nó vào danh sách được gọi cpu_perc
.
Vòng lặp này ngay tại đây
for i in range(len(cpu_num)):
print "CPU Core", str(i+1),":", str(cpu_perc[i]), "%"
là một vòng lặp for in ra tỷ lệ phần trăm hiện tại của mỗi lõi CPU của bạn.
Hãy thêm việc sử dụng RAM.
Tạo một hàm gọi là ram_perc
.
def ram_perc():
mem = psutil.virtual_memory()
mem_perc = mem.percent
print "RAM: ", mem_perc, "%"
psutil.virtual_memory
đưa ra một tập dữ liệu chứa các sự kiện khác nhau về RAM trong máy tính của bạn.
Tiếp theo, bạn có thể thêm một số sự thật về mạng của bạn.
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
Vì psutil.net_io_counters()
chỉ cung cấp cho chúng tôi thông tin về các gói được gửi và nhận theo byte, nên một số chuyển đổi là cần thiết.
Để có được một số thông tin về không gian trao đổi, thêm chức năng này.
def swap_perc():
swap = psutil.swap_memory()
swap_perc = swap.percent
Điều này là khá đơn giản.
Nhiệt độ là loại khó thực hiện, vì vậy bạn có thể cần thực hiện một số nghiên cứu của riêng mình để tìm ra cái gì sẽ hoạt động với phần cứng của bạn. Bạn sẽ phải hiển thị nội dung của một tập tin nhất định.
Sử dụng đĩa dễ dàng hơn nhiều so với nhiệt độ. Tất cả những gì bạn cần làm là chuyển đĩa bạn muốn theo dõi (tức là /
:) thông qua một chức năng nhất định.
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"
Kết quả ban đầu của psutil.disk_usage
là này,
>>>psutil.disk_usage('/')
sdiskusage(total=21378641920, used=4809781248, free=15482871808, percent=22.5)
nhưng bạn cũng có thể chỉ nhận được total
, used
, free
, hoặc percent
.
Chương trình đã hoàn thành: (các chức năng nói trên đã được kết hợp)
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()
Dòng này temp = open("/sys/class/thermal/thermal_zone0/temp").read().strip().lstrip('temperature :').rstrip(' C')
có thể không hoạt động với cấu hình phần cứng của bạn.
Chạy chương trình này từ dòng lệnh. Truyền các đĩa bạn muốn theo dõi dưới dạng đối số từ dòng lệnh.
$ 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
Hi vọng điêu nay co ich! Bình luận nếu bạn có bất kỳ câu hỏi.
https://github.com/calthecoder/sysmon-1.0.1