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下载速度慢的解决方法