根据pid定时监控CPU使用率和内存使用率并输出到文件 (windows和linux跨平台可用)
有时服务器运维中,某些程序员的应用发布后完全不管CPU和内存的使用率,只觉得代码能运行就行了,这样给我们运维人员经常造成困扰;
比如我在zabbix平台中就经常监测到凌晨1~3~5点时候突然CPU飙升到50~93%,win和linux系统都没有比较方便的定时监控指定进程的方法,经过长时间的寻解、修改和测试,如下python代码可以实现根据pid定时监控CPU使用率和内存使用率,并输出到.csv文件,windows和linux平台皆可用:
# 本程序可以实现自动识别CPU内核数,然后根据输入的进程pid号,来计算出多核的CPU使用率和内存使用率,并将监控结果同时打印到屏幕和文件中。
import sys
import time
import psutil
# 查询显示当前系统的CPU内核和颗数等信息
print('逻辑CPU个数:' + str(psutil.cpu_count())) # 取多内核平均值时应除以物理内核比较近似
print('物理CPU个数:' + str(psutil.cpu_count(logical=False)))
# print('当前可用CPU个数:' + str(len(psutil.Process().cpu_affinity())))
# 将输入的参数pid号保存到列表sys.argv中,若输入的值小于2位则中断退出并提示
if len(sys.argv) < 2:
print("输入pid值无效,请按示例输入,例:“python CPU_Analysis_Python.py pid号码”")
sys.exit()
# 通过psutil模块,获取并保存pid对应的进程对象
pid = int(sys.argv[1])
p = psutil.Process(pid)
# 监控进程相关的CPU和内存使用率数据,写入存储
interval = 1 # 设置监控的循环间隔时间
with open("CPU_Analysis_pid" + str(pid) + "_" + p.name() + ".csv", "a") as f: # 创建记录输出文档,格式为.csv
f.write(" 时间 , CPU使用率(%), 内存使用率(%) \n") # 写入标题——>.csv文档中
while True:
with open("CPU_Analysis_pid" + str(pid) + "_" + p.name() + ".csv", "a") as f: # 添加监控记录输出文档
current_time = time.strftime('%Y%m%d-%H:%M:%S', time.localtime(time.time()))
# 计算CPU使用率(%) = 所有核心使用率之和 / (1s * 物理内核数量), 参数interval的值为获取当前CPU使用率的时间间隔
cpu_percent = round(((p.cpu_percent(interval=1) / 100) / psutil.cpu_count(logical=False)) * 100, 2)
mem_percent = p.memory_percent()
line = current_time + ',' + str(cpu_percent) + ',' + str(mem_percent)
print('时间:' + current_time + ', CPU使用率:' + str(cpu_percent) + ', 内存使用率:' + str(mem_percent)) # 输出控制台,可注销掉
f.write(line + "\n")
time.sleep(interval)
根据pid定时监控CPU使用率和内存使用率并输出到文件 (windows和linux跨平台可用)的更多相关文章
- 【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率
问题描述 在Azure上创建虚拟机(VM)后,在门户上可以查看监控指标(Metrics),如CPU Usage,Memory,Disk I/O等.那如何通过Java 代码获取到这些指标呢? 关于VM ...
- 获取Windows操作系统的CPU使用率以及内存使用率
此功能参考了ProcessHacker项目的代码. 声明定义 typedef struct _UINT64_DELTA { ULONG64 Value; ULONG64 Delta; } UINT64 ...
- C# 获取Windows系统:Cpu使用率,内存使用率,Mac地址,磁盘使用率
一.获取CPU使用率: #region 获取CPU使用率 #region AIP声明 [DllImport("IpHlpApi.dll")] ...
- linux下实现CPU使用率和内存使用率获取方法
想获取一下目标机运行时linux系统的硬件占用情况,写了这几个小程序,以后直接用了. 方法就是读取proc下的文件来获取了. cpu使用率: /proc/stat ,内存使用情况: /p ...
- crond守护进程实现定时监控某进程占有内存的大小
1)添加计划任务 crontab -e会使用某个编辑器打开某个文件,然后在内输入需要执行的计划任务,保存后在/var/spool/cron/crontabs/下会出现以用户名命名的文件 2)计划任务如 ...
- win 系统设置weblogic 进行定时自动重启并删除其日志和缓存文件,定时监控cpu是否达到100%并重启weblogic服务
一:如何在win系统设置 任务管理:请百度查询 win系统设置 任务管理 二:设置 webogic 重启并删除垃圾文件的bat脚本 sqlplus /nolog @C:\Users\Administr ...
- 查看Linux服务器CPU使用率、内存使用率、磁盘空间占用率、负载情况
[root@server script]# vi monitor.py #!/usr/bin/env python # -*- coding:utf-8 -*- #Author: nulige imp ...
- 获取当前电脑的cpu使用率、内存使用率
https://www.cnblogs.com/Chary/p/7771365.html http://www.cnblogs.com/zl1991/p/4679461.html 要关注几个类 Per ...
- qt 获取磁盘空间大小,cpu利用率,内存使用率
转自:http://www.qtcn.org/bbs/read-htm-tid-60613.html. 1:封装成一个类,直接调用即可.已经在多个商业项目中使用.2:所有功能全平台 win linux ...
- [No0000112]ComputerInfo,C#获取计算机信息(cpu使用率,内存占用率,硬盘,网络信息)
github地址:https://github.com/charygao/SmsComputerMonitor 软件用于实时监控当前系统资源等情况,并调用接口,当资源被超额占用时,发送警报到个人手机: ...
随机推荐
- LeetCode-780 到达终点
来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/reaching-points 题目描述 给定四个整数 sx , sy ,tx 和 ty,如果通过 ...
- Linux学习之文件目录指令(部分)
包括了 ls pwd cd mkdir rmdir touch cp rm mv cat echo more less head tail > >>指 ...
- wen文章表设计
- vue模板三目运算判断报错
问题: 关于vue三目运算符提示报错 1.三目运算符等于判断 {{ a==b ? '是' : '否'}} 2.其他三目运算符 <代表小于号(<) >代表大于符号(>) ≤表示小 ...
- WPF里面触发器
WPF中有种叫做触发器的东西(记住不是数据库的trigger哦).它的主要作用是根据trigger的不同条件来自动更改外观属性,或者执行动画等操作. WPFtrigger的主要类型有:Trigger. ...
- WPFMVVM实现ICommand与INotifyPropertyChanged接口
话不多说直接上代码 INotifyPropertyChanged实现代码 internal class NotifyBase : INotifyPropertyChanged { public eve ...
- Python控制台输出字体颜色及背景设置
python 可以利用命令输出带有特效的控制台字体 基础语法 Python利用'\033[<style CODE>;<fore color CODE>;< back co ...
- [数据库-Mongo总结]-mysql使用总结和pymysql交互
3. MySQL 3.1 安装 3.1.1 win 3.1.1.1 安装 >下载mysql >mysql-front: Host:localhost 端口:3306 用户:root 3.1 ...
- 监控平台prometheus+grafana+snmp_explorer+blackbox_exporter+alertmanager
一.背景介绍 公司需要监控交换机和IP设备,能够放在展示屏幕,及时发出告警信息.网上有很多监控软件,prometheus系列已经能够满足我们需求.prometheus功能强大,本次只用到一部功能.咱们 ...
- vue学习 第二天 CSS基础
CSS: 层叠样式表 ( Cascading Style Sheets ) 的简称 1.css简介 1)也是一种标记语言 2)主要用来设置html页面中,标签的样式. 3)css美化了html页面, ...