根据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 软件用于实时监控当前系统资源等情况,并调用接口,当资源被超额占用时,发送警报到个人手机: ...
随机推荐
- TextView 走马灯效果不生效
TextView 控件需要添加以下必要的属性: <TextView android:ellipsize="marquee" android:focusable="t ...
- PostGIS之线性参考
1. 概述 PostGIS 是PostgreSQL数据库一个空间数据库扩展,它添加了对地理对象的支持,允许在 SQL 中运行空间查询 PostGIS官网:About PostGIS | PostGIS ...
- java HashMap的四种获取key,value的方式
初学java不久,我觉得这样将学到的东西总结下来非常好,如果有一天有些地方忘记了 可以回过头来翻看,不用来回的找,非常好,也是一个很好的习惯 今天主要将记录获取hashMap的key,value的几种 ...
- 溢出标志位OF与进位标志位CF判断
1.OF与CF概述 OF(Overflow Flag,溢出标志位):有符号数之间加减运算的溢出标志 CF(Carry Flag,进位标志位):无符号数之间加减运算的溢出标志 快速判断(加法)(减法可转 ...
- 云服务器 CentOS 的使用历程
------------恢复内容开始------------ CentOS图形页面的下载 安装X(X Window System),命令如下: yum groupinstall "X Win ...
- Linux常用的性能分析
参考文档:https://www.runoob.com/w3cnote/linux-common-command-2.html 一.ps -aux ps -aux ps -ef -a:所有进程. -u ...
- 1223. 掷骰子模拟 (Hard)
问题描述 1223. 掷骰子模拟 (Hard) 有一个骰子模拟器会每次投掷的时候生成一个 1 到 6 的随机数. 不过我们在使用它时有个约束,就是使得投掷骰子时, 连续 掷出数字 i 的次数不能超过 ...
- winfrom快捷键
1.当活动窗体的快捷键 1 protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 2 { 3 KeyEventArg ...
- 淘宝sign算法和使用教程
前言 最新写的淘宝热卖插件系列里面有涉及到淘宝sign算法加密,这里博主分享一下之前找到算法和修改后的算法以及使用教程.在此希望能帮助更多的人,欢迎各位加入我的交流Q群:468458543,群内不定时 ...
- 使用navicat进行数据传输报错ERROR: permission denied for table xxx
数据库我使用的是pgsql,在进行数据传输时报错ERROR: permission denied for table demo1,这里的原因是权限问题哦,所以可以给定当前用户更大权限,我这里则是直接切 ...