python监控进程脚本_进程监控的python脚本
class_config.py
#!/usr/bin/env python
#coding:utf-8
'''此处定义邮件的相关参数'''
class Mail_conf():
sender = 'fyxichen@126.com'
receiver = 'fyxichen@126.com'
host = 'smtp.126.com'
port = '25'
user = 'fyxichen@126.com'
passwd = '123456'
log_dir = 'sendmail_err_log'
'''此处定义监控程序以及启动路径,启动路径不能包含中文'''
#用法{程序名称:启动口令}
#配置重启日志名称,不能为空。
class ProgramPath():
Path = {'RTX.exe':'/home/admin',
'Foxmail.exe':'D:\Program Files (x86)\jisupdf',
'QQ.exe':'D:\Program Files (x86)\Tencent\QQ\Bin\qq.exe',}
Restart_Log_path = 'Restart_log_path'
SendMail.py
#!/usr/bin/env python
#coding:utf-8
import string,time
import smtplib
from email.mime.text import MIMEText
from email.header import Header
from class_config import Mail_conf
'''发送邮件类'''
def send_mail(Title,context):
msg = MIMEText(context,'plain','utf-8')
msg['Subject'] = Header(Title,'utf-8')
try:
smtp = smtplib.SMTP()
smtp.connect(Mail_conf.host,Mail_conf.port)
smtp.login(Mail_conf.user, Mail_conf.passwd)
smtp.sendmail(Mail_conf.sender, Mail_conf.receiver, msg.as_string())
smtp.quit()
except Exception,e:
Writelog = open(Mail_conf.log_dir,'ab')
log = '%s-->%s\n' % (time.strftime('%Y-%m-%d %H:%M:%S'),str(e))
print log
Writelog.write(log)
Writelog.close()
if __name__ == "__main__":
send_mail("Test Mail","这是一封测试邮件,更改邮箱配置在class_config.py中配置")
ProcessMoniter.py
#!/usr/bin/env python
#coding:utf-8
import psutil,time
import subprocess
from class_config import ProgramPath
def monitor():
Time = time.time()
log = open(ProgramPath.Restart_Log_path,'ab+')
log.write('****************%s****************\n' % time.strftime('%Y-%m-%d %H:%M:%S'))
log.close()
while True:
ProcessName = ProgramPath.Path.keys()
Process = psutil.process_iter()
for i in Process:
try:
if i.name() in ProcessName:
ProcessName.remove(i.name())
except Exception,e:
pass
for i in ProcessName:
try:
Restart = subprocess.Popen(ProgramPath.Path[i],shell=False)
except Exception,e:
err_log = '%s-->%s\n' % (time.strftime('%Y-%m-%d %H:%M:%S'),str(e).strip())
log = open(ProgramPath.Restart_Log_path,'ab+')
log.seek(-(len(str(e))),2)
if log.readline().strip() == str(e).strip():
if Time + 60 > time.time():
pass
else:
log.seek(0,2)
log.write(err_log)
log.close()
Time = time.time()
else:
log.seek(0,2)
log.write(err_log)
log.close()
Time = time.time()
time.sleep(2)
if __name__ == "__main__":
monitor()
Net_io.py
#!/usr/bin/env python
#coding:utf-8
import psutil
import time
import sys
from optparse import OptionParser
parser = OptionParser()
parser.add_option("-t", "--time", dest="time",
help="此参数可查看当前下载占的带宽,-t是测试时间", metavar="10")
def Net_io(s):
x = 0
sum = 0
while True:
if x >= s:
break
r1 = psutil.net_io_counters().bytes_recv
time.sleep(1)
r2 = psutil.net_io_counters().bytes_recv
y = r2 - r1
print "%.2f Kb/s" % (y / 1024.0)
sum += y
x += 1
result = sum / x
print "\033[1;32m %s秒内平均速度:%.2f Kb/s \033[1;m" % (x,result / 1024.0)
if __name__ == "__main__":
(options, args) = parser.parse_args()
if options.time:
Net_io(options.time)
else:
Net_io(10)
sysinfo.py
#!/usr/bin/env python
#coding:utf-8
import psutil
import time
import sys
def Sysinfo():
Boot_Start = time.strftime("%Y-%m-%d %H:%M:%S",time.localtime(psutil.boot_time()))
time.sleep(0.5)
Cpu_usage = psutil.cpu_percent()
RAM = int(psutil.virtual_memory().total/(1027*1024))
RAM_percent = psutil.virtual_memory().percent
Swap = int(psutil.swap_memory().total/(1027*1024))
Swap_percent = psutil.swap_memory().percent
Net_sent = psutil.net_io_counters().bytes_sent
Net_recv = psutil.net_io_counters().bytes_recv
Net_spkg = psutil.net_io_counters().packets_sent
Net_rpkg = psutil.net_io_counters().packets_recv
if __name__ == "__main__":
BFH = r'%'
print " \033[1;32m开机时间:%s\033[1;m" % Boot_Start
print " \033[1;32m当前CPU使用率:%s%s\033[1;m" % (Cpu_usage,BFH)
print " \033[1;32m物理内存:%dM\t使用率:%s%s\033[1;m" % (RAM,RAM_percent,BFH)
print "\033[1;32mSwap内存:%dM\t使用率:%s%s\033[1;m" % (Swap,Swap_percent,BFH)
print " \033[1;32m发送:%d Byte\t发送包数:%d个\033[1;m" % (Net_sent,Net_spkg)
print " \033[1;32m接收:%d Byte\t接收包数:%d个\033[1;m" % (Net_recv,Net_rpkg)
for i in psutil.disk_partitions():
print " \033[1;32m盘符: %s 挂载点: %s 使用率: %s%s\033[1;m" % (i[0],i[1],psutil.disk_usage(i[1])[3],BFH)
else:
File = open("sysinfo.log","ab+")
File.write("CPU:%s \tRAM:%s\tNet_recv:%d\tNet_sent:%d\r\n" % (Cpu_usage,RAM_percent,Net_recv,Net_sent))
File.flush()
File.close()
if __name__ == "__main__":
Sysinfo()
主程序就不写了,大家自己看情况用就好了,好久没写过python了写的不好大家见谅
都是一个功能一个文件,直接运行也可以组织起来调用
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点!
本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。
python监控进程脚本_进程监控的python脚本相关推荐
- jmeter脚本_性能工具之Jmeter脚本python启动
背景 上一节是shell命令启动Jmeter,担心大家对shell脚本语法不是很熟悉,如果定制自己想要的恐怕不好弄,这次改用python启动脚本,在改造之前大家先了解下Jmeter线程组相关参数,这样 ...
- go调用python脚本_谁能取代Python?我使用Go来部署机器学习模型的原因
全文共1881字,预计学习时长7分钟 图源:unsplash 毋庸置疑,Python是如今最受欢迎的机器学习语言.虽然机器学习框架使用CUDA C / C ++之类的语言进行实际运算,但它们都提供了P ...
- java执行python脚本_通过Java调用Python脚本
在进行开发的过程中,偶尔会遇到需要使用Java调用Python脚本的时候,毕竟Python在诸如爬虫,以及科学计算等方面具有天然的优势.最近在工作中遇到需要在Java程序中调用已经写好的Python程 ...
- python游戏开发步骤_【原创】python制作游戏脚本之网游寻址及64位程序的模块遍历(视频已安排)...
本帖最后由 公孙秒秒 于 2019-4-2 18:11 编辑 前言 ------------------------------------------------- 这篇教程旨在网游的基址查找和如何 ...
- python调用ping命令_我可以创建一个脚本来测试是否可以在python服务器上远程使用SSH和PING命令吗? - python...
我可以创建脚本来测试是否可以在python中远程使用服务器上的SSH和PING命令吗? 参考方案 好的,这是Python3和Linux的示例.只需记住,您的目标主机/服务器必须正在运行SSH服务器才能 ...
- python游戏按键无效_瞬速掌握Python系统管理-调试和分析脚本1-debugging
调试和分析在Python开发中发挥着重要作用. 调试器可帮助程序员分析完整的代码. 调试器设置断点,而剖析器运行我们的代码,并给我们执行时间的详细信息. 分析器将识别程序中的瓶颈.我们将了解pdb P ...
- 用python实现ai围棋_围棋AI.Leela+Python脚本分析棋谱
完成了Sabaki+LeelaSabaki+Leela GTP搭建完美围棋AI平台后,在"飞扬围棋论坛"看到有棋友介绍用Leela+Python脚本分析棋谱,于是也试了一下. 软件 ...
- 用python刷微信阅读_老司机用python脚本刷微信读书的时长
微信读书有一个鼓励机制, 一周阅读5小时可兑换10书币,每周日晚清空一周的总读书时长,没兑换的时长不计入下一周(1书币 == 1块钱) 作为一个经常加班的程序猿, 一周刷5个小时, 有点困难, 所以只 ...
- python制作浏览器插件_分享一个火车浏览器脚本插件python中文分词
最近在采集一批信息,发现火车浏览器的自带分词插件,分词效果不是很理想,在网上找了一个API分词接口:pullword 其实对于火车浏览器脚本插件用PHP和python都可以写,之前做了一个PHP分词插 ...
- python新版下载安装_各种版本的Python下载安装教程
python从17年开始大火,自然想学python的同学就多了,小编整理了这篇文章,从python的功能介绍.各系统最新版本python下载.python全部版本下载.python下载后安装教程以及p ...
最新文章
- vue weex 调用原生toast_vue-template-compiler 还能这么用
- Windows PE导出表编程3(暴力覆盖导出函数)
- Gym 100431E	Word Cover 题解:KMP上跑dp
- html文本可选择,如何用javascript选择html文本?
- 如何Exchange移动数据库文件(一)
- 函数sprintf真好用
- 【算法系列之一】二叉树最小深度
- HDU 5392 BC #51
- 2021.08.26学习内容 Win10+GeForce GTX1650安装NVIDIA显卡驱动及CUDA11.4+cuDNN8.2
- android - 调用系统分享功能分享图片
- 利用BI进行报表分析(二)--SSAS多维数据集以及维度的建立
- 四、物理优化(6)数据库引擎优化顾问
- ubuntu下sudo:add-apt-repository:command not found 问题
- 2018acm编程大赛题目c语言,编程竞赛题(超牛题目,留下做研究).doc
- 用C语言编写大写字母用ascll表示,用java实现输入ASCII码,打印出对应的大写字母。...
- PL3376C-ASEMI恒压原边控制PL3376C
- uni-app 使用蓝牙打印机ESC/POS指令基础方法
- mysql拼音码自动生成_根据中文名,自动生成首字母的拼音码或拼音码(两种方法)...
- UE4UE5 VR开发多人联机RPC的坑
- 地球人都在玩跨境电商