linux服务器显卡监控脚本
文章目录
- 1.watch_nvidia
- 2.send_msg
- 3.完整脚本nvidia.py
- 4.后台运行
- 前期准备:
pip install pynvml
1.watch_nvidia
#参数:nvidia_ids:显卡id min_memory:最小可用显存 GB
def watch_nvidia(nvidia_ids,min_memory):flag = [1 for i in nvidia_ids]for i in nvidia_ids:handle = pynvml.nvmlDeviceGetHandleByIndex(i)meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)#遍历每块卡的剩余显存print("card {} free memory is {}GB".format(i,meminfo.free * 1.0 /(1024**3)))if meminfo.free * 1.0 /(1024**3) > min_memory:flag[i-1]=0else:flag[i-1]=1#统计符合要求的卡的数量if 0 in flag:free_num = 0for i in flag:if i == 0:free_num += 1return free_num#返回符合要求的卡的数量else:print("no free card!")return -1
2.send_msg
#发送邮箱信息
#target_email:接受信息的邮箱,msg:发送的消息
def send_msg(target_email,msg):sender = 'xxxxx@163.com' #发送信息的邮箱receivers = [target_email] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码message = MIMEText(msg, 'plain', 'utf-8')subject = 'nvidia显卡监控'message['Subject'] = Header(subject, 'utf-8')#server = smtplib.SMTP('smtp.163.com', 587)server = smtplib.SMTP_SSL('smtp.163.com')#这部分需要去发送的邮箱账号去开启IMAP服务,获取登录授权码server.connect('smtp.163.com',465)#server.starttls()#server.ehlo()#xxxxxx是获取的登录授权码server.login(sender, "xxxxxx") server.sendmail(sender, receivers, message.as_string()) server.quit()
3.完整脚本nvidia.py
#-*-coding:GBK -*-
import pynvml
pynvml.nvmlInit()
import time
import os
#from send_email import send_msgimport smtplib
from email.mime.text import MIMEText
from email.header import Headerdef send_msg(target_email,msg):sender = 'xxxxx@163.com'receivers = [target_email] # 接收邮件,可设置为你的QQ邮箱或者其他邮箱# 三个参数:第一个为文本内容,第二个 plain 设置文本格式,第三个 utf-8 设置编码message = MIMEText(msg, 'plain', 'utf-8')subject = 'nvidia显卡监控'message['Subject'] = Header(subject, 'utf-8')#server = smtplib.SMTP('smtp.163.com', 587)server = smtplib.SMTP_SSL('smtp.163.com')server.connect('smtp.163.com',465)#server.starttls()#server.ehlo()server.login(sender, "xxxxxxx") server.sendmail(sender, receivers, message.as_string()) server.quit()#smtpObj = smtplib.SMTP("localhost",1025)#try: # smtpObj.sendmail(sender, receivers, message.as_string())# print("邮件发送成功")#except smtplib.SMTPException:# print("Error: 无法发送邮件")def watch_nvidia(nvidia_ids,min_memory):flag = [1 for i in nvidia_ids]for i in nvidia_ids:handle = pynvml.nvmlDeviceGetHandleByIndex(i)meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)print("card {} free memory is {}GB".format(i,meminfo.free * 1.0 /(1024**3)))if meminfo.free * 1.0 /(1024**3) > min_memory:flag[i-1]=0else:flag[i-1]=1if 0 in flag:free_num = 0for i in flag:if i == 0:free_num += 1return free_numelse:print("no free card!")return -1nvidia_ids = [0,1] # 显卡id
min_memory = 8 # 最小可用显存 GB
while True:flag = watch_nvidia(nvidia_ids,min_memory)if flag >= 1:send_msg("xxxxxxx@bjtu.edu.cn","{}张显卡空闲".format(flag))#os.system("sh veri.sh") # your commandbreaktime.sleep(10)
4.后台运行
nohup python nvidia.py >nvidia.out&
linux服务器显卡监控脚本相关推荐
- linux检测磁盘 报警,linux服务器磁盘监控脚本分享(含报警邮件)
在日常的运维工作中,我们经常会对服务器的磁盘使用情况进行巡检,以防止磁盘爆满导致的业务故障. 如果能编写一个合理完善的监控脚本,当磁盘使用率达到我们设置的阀值时,就自动发送报警邮件,以便我们及时获悉到 ...
- 用Python脚本实现对Linux服务器的监控
一.前言 二.概述 三.Python 版本说明 四./proc 文件系统 五.对CPU监测 六.对系统负载监测 七.对内存信息的获取 八.对网络接口的监测 九.监控apache服务器进程的Python ...
- 用 Python 脚本实现对 Linux 服务器的监控
版本说明 Linux 服务器是 Ubuntu 12.10 Python 版本 是 2.7 工作原理:基于/proc 文件系统 Linux 系统为管理员提供了非常好的方法,使其可以在系统运行时更改内核, ...
- 【无标题】Linux服务器上监控网络带宽的18个常用命令
Linux服务器上监控网络带宽的18个常用命令 linux网络流量网络监控工具安装时,但是部分系统yum安装提示是没有这个包, 我们安装EPEL第三方软件源.EPEL(Extra Packages f ...
- Linux服务器上监控网络带宽的18个常用命令和工具
Linux服务器上监控网络带宽的18个常用命令和工具 一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看Ce ...
- linux服务器监控谁改了文件,linux服务器文件监控
linux服务器文件监控 内容精选 换一换 为了防止您的主机被勒索病毒侵害,请创建防护策略,将重点防御的文件添加到防护策略的监控路径中,并启动机器学习.机器学习会自动聚类并收集该策略下的所有服务器的正 ...
- Linux网络流量监控脚本
公网业务中时长会出现服务器异常繁忙或者CPU和内存突然增长,导致我们服务不稳定,很有可能是被网络攻击导致的.所以运维人员都要具备对服务器的流量和连接数进行随时监控和排查的能力. 前几期出了一批使用脚本 ...
- Linux服务器上监控网络带宽的18个常用命令
本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以显示单个进程所使用的带 ...
- Linux服务器上监控网络带宽与监控性能命令大全
[51CTO精选译文]本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量分开来显示. 一些命令可以 ...
最新文章
- matlab参数数目不足lorenz,求指导,MATLAB程序,老是提示这个“未定义与 'double' 类型的输入参数相对应的函数 'genfisl'。”错误,...
- Tomcat问题 无法启动
- Chipseq数据库的建立
- 杜教筛--51nod1239 欧拉函数之和
- Python自动化运维工具fabric的安装
- ProxyChains
- Python 处理前端反调试(无限debugger)
- 上传伪技术~很多人都以为判断了后缀,判断了ContentType,判断了头文件就真的安全了。是吗?...
- Java咖啡馆(8)——大话面向对象(下)
- oracle创建用户与权限操作(oracle学习笔记一)
- 每天一点正则表达式积累(五)
- 编写一个应用程序,给出汉字‘你’、‘我’、‘他’在Unicode表中的位置。
- java炒股软件_股票软件java,中国软件股票怎么样
- 苹果x来电闪光灯怎么设置_免费设置来电视频彩铃,安卓苹果都适用!
- 【Spring学习03】Spring简单入门实例
- 一款非常好看的婚纱请柬设计英文字体
- 方便的支付宝第三方平台,三分钟教你搭建
- Delphi中使用Imageen控件将图像文件转换成PDF
- NPN和PNP型传感器或开关如何接线?
- Maya 展UV和贴图