Windows bat 脚本检测进程 内存占用

1,248 阅读2分钟

bat 脚本检测进程 内存占用

代码实现监控redis进程,每隔1分钟将tasklist查到的内存使用情况存入redis.txt文件中。

 @echo off
 ​
 rem 这段用来将脚本放入后台运行
 if "%1"=="hide" goto CmdBegin
 start mshta vbscript:createobject("wscript.shell").run("""%~0"" hide",0)(window.close)&&exit
 :CmdBegin
 ​
 rem 这段用来从tasklist中查找到redis-server.exe这行,然后提取第5列,分隔符是空格,最后将日期和时间及查到的内存数输出到redis.txt文件中
 :top
 for /f "tokens=5 delims= " %%a in ('tasklist /nh ^|findstr /i redis-server.exe') do echo %date% %time% %%a >> redis.txt
 ​
 rem 使用ping来实现每隔60s
 ping -n 60 127.0.0.1>nul
 goto top
 ​

Python 可视化

将获得的数据展示出来,使用python的panda库清洗和格式化数据,最终用matplotlib来展示数据。

 import numpy as np
 from pandas import Series,DataFrame
 import pandas as pd
 import matplotlib.pyplot as plt
 # 设置显示样式
 plt.style.use("ggplot")
 # 设置中文编码
 plt.rcParams["font.sans-serif"] = "KaiTi"
 # 读取txt文件,header=None表示没有表头,header=0表示第一行是表头,encoding编码,sep是分隔符 r'\s+'表示空白符
 data=pd.read_table("redis.txt",header=None, encoding='gbk',sep=r'\s+')
 # 删除索引为1的列,drop默认删除行,axis = 1修改为删除列
 data=data.drop(1, axis = 1)
 # 将索引为0和2的两列连接一起
 data['日期时间']=data[[0,2]].apply(lambda x:' '.join(x), axis=1)
 # 删除索引为0(日期)和索引为2(时间)的两列
 data=data.drop(0, axis = 1)
 data=data.drop(2, axis = 1)
 # 将日期时间格式化
 data['日期时间']=pd.to_datetime(data['日期时间'], errors='coerce')
 # 对数字进行格式化,删除中间的,号
 data[3]=data[[3]].apply(lambda x: x.str.replace(',', ''),axis=1)
 # 将数字格式化,遇到不能转的,有三种选项,raise 报错(默认) ignore 忽视 coerce 转成NAN非数字 NAT非时间
 data[3]=pd.to_numeric(data[3], errors='coerce')
 # 将KB转成MB
 data[3]=data[[3]].apply(lambda x: x/1024, axis=1)
 plt.plot(data['日期时间'], data[3])
 plt.title('redis进程内存使用')
 plt.xlabel('时间')
 plt.ylabel('内存(M)')
 plt.show()
 ​

bat终止方法

按 Ctrl+Alt+Del 组合键 调出任务管理器,然后找到进程 cmd.exe 终止它

怎么结束后台运行的批处理文件_百度知道 (baidu.com)

参考

windows进程监控内存及数据可视化aabond的博客-CSDN博客windows 内存监控

用VScode配置Python开发环境 - 知乎 (zhihu.com)

VSCode配置Python教程Zhangguohao666的博客-CSDN博客vscode使用教程

解决Python用pip命令安装速度慢,改用国内镜像shawroad的博客-CSDN博客pythonpip下载速度慢的解决方法

bat 【批处理】如何结束进程?心飞路漫的博客-CSDN博客bat结束进程命令