import yagmail #匯入yagmail模組
import psutil #匯入psutil模組
def sendmail(subject,contents): #把郵件設定為函式,方便引用
#連線郵箱伺服器
yag = yagmail.smtp(user=『[email protected]』,password=『zjc123456789』,host=『smtp.163.com』)
#傳送郵件
yag.send(to=『[email protected]』,subject=subject, contents=contents)
#斷開連線
yag.close()
# 郵箱為本人的,password為客戶端授權密碼,可在自己的郵箱中設定
#分別把cpu,mem,disk設定函式,在彙總到乙個總的函式中,既美觀又方便呼叫。
本人以前把三個設定在乙個函式中,發現有很多缺點。
(1)**整體顯得比較亂(2)不能單獨呼叫(3)不方便傳引數等
def cpu_info():
cpu = psutil.cpu_percent(1) #測試1秒內cpu的使用率
return cpu #新增返回值方便呼叫
def mem_info():
mem = psutil.virtual_memory()
total_mem = int(mem[0]/1024/1024) #記憶體總量(m)
free_mem = int(mem[1]/1024/1024)#剩餘記憶體單位(m)
percent_mem = mem[2] #記憶體使用百分比
used_mem = int(mem[3]/1024/1024) #已用記憶體單位(m)
mem_dict =
return mem_dict #把返回值設定成字典,方便呼叫
def disk_info():
disk = psutil.disk_usage(『c:』)
total_disk = int(disk[0]/1024/1024/1024) #總磁碟大小單位為g
used_disk = int(disk[1]/1024/1024/1024)#已用磁碟單位為g
free_disk = int(disk[2]/1024/1024/1024)#空餘磁碟單位為g
percent_disk = disk[3] #磁碟使用百分比
disk_dict =
return disk_dict #同理記憶體,方便呼叫傳參
def main():
cpu = cpu_info()
mem = mem_info()
disk = disk_info()
msg = 『』』
cpu利用率:%s%% #%有特殊含義,需要再加乙個百分號轉義為普通含義
記憶體總大小:%sm
記憶體剩餘大小:%sm
記憶體使用大小:%sm
記憶體使用率:%s%%
硬碟總大小:%sg
硬碟使用大小:%sg
硬碟剩餘大小:%sg
硬碟使用率:%s%%
『』』 % (cpu,mem.get(『total_mem』),mem.get(『free_mem』),mem.get(『used_mem』),mem.get(『percent_mem』),disk.get(『total_disk』),disk.get(『used_disk』),disk.get(『free_disk』),disk.get(『percent_disk』))
if cpu > 1:
print(『cpu過高』)
sendmail(『cpu報警』,msg)
else:
print(『cpu正常』)
#也可以新增記憶體或者磁碟,本人只是做個簡單示例
ifname== 『main』: #直接輸入main+enter就可以引用main 這樣呼叫main算是一種約定俗成吧;也可以直接引用main,不過那樣不夠美觀。寫**不只要自己看的懂,讓讀者容易理解的程式才是好程式。。。。。。。。
main()
Linux監控CPU,記憶體,磁碟I O
簡單講講linux下監控 cpu 監控cpu,top命令能夠實時監控系統的執行狀態,並且可以按照cpu 記憶體和執行時間進行排序,同時top命令還可以通過互動式命令進行設定顯示,通過top命令可以檢視即時活躍的進行。記憶體 free命令可以檢視當前系統記憶體的使用情況 free m以mb為單位顯示系...
監控cpu 記憶體
pid 1 獲取程序pid echo pid interval 1 設定採集間隔 while true do echo date y m d h m s proc memlog.txt cat proc pid status grep e vmrss proc memlog.txt 獲取記憶體占用 ...
linux系統CPU,記憶體,磁碟,網路流量監控指令碼
bin sh eth eth0 eth1 get eth info awk while read line do echo line data echo name line awk if z data then echo data fidone sum eth echo ret 12321.txt ...