随着信息技术的不断发展,Windows操作系统在日常工作中扮演着至关重要的角色,为了确保系统稳定运行,监控和管理Windows进程变得至关重要。本文将介绍一种基于Python编写的进程监控脚本,通过自启动设置,实现Windows环境下Python服务的自动监控和管理。这种脚本的使用不仅提高了工作效率,还能够及时发现并解决进程异常问题,保障系统的稳定性。
目录需求描述1. Python应用服务自启动1.1. 启动时运行批处理文件1.2. 使用任务计划程序运行批处理文件1.3. 注册服务2. 应用服务监控2.1. 自定义python脚本在windows下的进程名2.2. 守护进程3. 把应用程序与批处理文件加入到安全白名单中4. 实践方案5. 其他总结需求描述 在windows服务器环境中,python应用服务在服务器重启时,能自动启动;在任务管理器中,能区分监控python应用服务(默认都是python的情况,无法区分多个python进程);监控python应用服务进程,当应用服务挂掉后,重新启动服务。 1. Python应用服务自启动 1.1. 启动时运行批处理文件Windows 10/Windows Server 201X具有一个名为“启动”的已知文件夹,系统每次启动开始自动运行应用程序、快捷方式和脚本时都会检查该文件夹,而无需额外配置。
要在Windows启动时运行脚本,先使用Windows+R快捷键打开“运行”对话框。
键入命令:shell:startup
C:\Users\xiaoyw\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup
写段测试代码,做成批处理,放到“启动”文件夹下。
批处理,命名为startup.bat:
d:cd \01workspace\studypython TestStartup.py
python示例代码:
import datetimenow = datetime.datetime.now()dtime = now.strftime("%Y-%m-%d %H:%M:%S")print('延迟时间是:', dtime)with open('startup.txt','w') as f: f.write(dtime + ", test ok!")1.2. 使用任务计划程序运行批处理文件
使用任务计划程序在特定时间自动运行批处理文件。
1.3. 注册服务注册服务的优势就在于可以开机自启动,而在windows上,python不能直接将脚本注册为服务,需要将其先打包成exe,再将exe注册为服务。
打包exe,使用pyinstaller打包,安装好pyinstaller包后,在cmd/pycharm的终端里运行如下代码打包。
2. 应用服务监控 2.1. 自定义python脚本在windows下的进程名在windows环境中,部署多个python应用服务时,在任务管理器中监控进程时,任务名称都是python.exe,无法识别是哪个具体任务,造成维护困难。
简单解决方法是按需拷贝(copy)python.exe文件(python.exe大小只有100k),然后重命名成为pvforecast_py.exe(或者随便你想要的名字),然后你写一个批处理文件,内容是start python_myapp1.exe myapp.py。
然后你运行批处理文件,你就会发现在任务管理器中的详细信息页面中出现了python_myapp1.exe。
python.exe大小只有几十k,多copy几个也无所谓。比起build成exe还是简单很多。
批处理文件名称为PVForecastAPScheduler.bat,代码如下:
@echo offD:cd D:\Python\PVMicrogrid\PVSystemstart pvforecast_py PVForecastAPScheduler.py
测试验证代码如下:
import datetimeimport pytzfrom apscheduler.schedulers.blocking import BlockingSchedulerdef test(): now = datetime.datetime.now() dtime = now.strftime("%Y-%m-%d %H:%M:%S") print('延迟时间是:', dtime) with open('startup1.txt','w') as f: f.write(dtime + ", test ok!") scheduler = BlockingScheduler(timezone=pytz.timezone("Asia/Shanghai") )scheduler.add_job(test, 'cron', second='10', misfire_grace_time=60, id='job1')try: scheduler.start()except (KeyboardInterrupt, SystemExit): pass2.2. 守护进程
有时会遇到断网、硬件设备掉线等情况,需要重新启动服务,觉得较为麻烦。想仿照linux下的脚本,写一个windows下的脚本,守护进程,自动检查自启动,或发出报警。
windows下的脚本为monitor.bat文件,下面以启动***.exe文件为例:
@echo off:startchoice /t 5 /d y /n >nultasklist|find /i "pvforecast_py.exe"if %errorlevel%==0 (echo "yes") else (echo "No"start pvforecast_py.exe ****.py)goto start
其中,
###定时5s choice /t 5 /d y /n >nul ###如果存在该进程 if %errorlevel%==0 ( ###如果不存在,则自行启动 start pvforecast_py.exe ****.py3. 把应用程序与批处理文件加入到安全白名单中
加入到白名单中的文件目录,文件,安全防护工具将信任该软件,可以直接使用。
以360安全卫士为例,在信任区添加python文件目录,以及启动文件夹中的批处理文件。
4. 实践方案最初,使用任务计划程序方式。自动启动python应用服务,由于受到安全卫士的阻止,没有找到易操作维护任务计划程序方式,现改为在启动中部署自动启动python用于服务,以及增加监控方法,提高运维效率。
最后的批处理文件(buildw.bat)如下:
chcp 65001copy d:\python\python38\python.exe d:\python\python38\pvforecast_py.execopy d:\python\python38\python.exe d:\python\python38\pvweather24_py.execopy d:\python\python38\python.exe d:\python\python38\pvweather_py.execopy d:\python\python38\python.exe d:\python\python38\pvenergy_py.execopy D:\Python\PVMicrogrid\PVSystem\PVForecastAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\PVForecastAPScheduler.bat"copy D:\Python\PVMicrogrid\PVSystem\PVTrainAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\PVTrainAPScheduler.bat"copy D:\Python\PVMicrogrid\PVSystem\PVAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\PVAPScheduler.bat"copy D:\Python\PVMicrogrid\EnergyOptimization\EnergyAPScheduler.bat "%userprofile%\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\EnergyAPScheduler.bat"
以管理员身份进入CMD命令行窗口:
D:\>buildw.bat
相关批处理命令解释如下:
注:在 Windows 批处理中,如果路径中含有中文字符,可能会出现乱码的情况。
在批处理文件开头添加以下语句:
chcp 65001
这个命令可以将命令行窗口的字符编码设置为 UTF-8,从而支持中文字符。
注:如果文件路径中含有空格,则批处理命令中,使用双引号引起来。
5. 其他也可以使用所有用户的启动目录:
C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup
用管理员权限用户启动目录,所有用户的启动目录,批处理都执行。
总结以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
以上就是windows进程监控脚本的全部内容,碰到同样情况的朋友们赶紧参照小编的方法来处理吧,希望能够对大家有所帮助。
相关教程
2024-09-19
2024-02-07
2024-05-27
2024-03-05
2024-04-02
2024-06-11
2024-07-14
2024-05-15
2024-04-11
2024-01-31
2024-11-21
2024-11-21
2024-11-20
2024-11-20
2024-11-19
2024-11-15
copyright © 2012-2024 纯净之家 m.gdhst.com 版权声明