操作系统 :CentOS 7.6.1810_x64

Python 版本 : 2.7.5

一、背景描述

工作中会遇到需要监控程序运行过程数据的情况,比如定时执行监控的cmd并记录执行结果,本文提供一种实现方式,便于后续排查问题。

二、具体实现

使用python实现该功能很简单,大致分为以下几个步骤:

1、编写cmd命令,确保执行后有控制台输出且退出命令;

2、使用 popen 执行cmd命令,并获取cmd的执行结果;

3、将执行结果以日志形式写入文件,并设置日志文件总大小,避免占用过多磁盘;

自动监控脚本示例代码如下:

完整代码可从该地址获取:聊聊博文-使用python自动监控程序运行过程数据

或关注微信公众号(聊聊博文,文末可扫码)后回复 2023031801 获取。

其中,cmd 可以根据实际情况进行调整,这里列举下我常用的几个场景。

  • 监控某进程cpu、内存使用情况

先使用ps获取程序pid,再使用top命令监控进行运行数据:

top -b -n 1 -p 15653

  • 监控磁盘使用情况

可使用iostat命令获取指定设备的使用数据:

iostat -d sda

  • 监控某应用程序运行数据

比如监控freeswitch的呼叫数据,可以使用如下命令:

/usr/local/freeswitch/bin/fs_cli -x "show calls count"

如果是在docker容器中,可使用如下命令:

docker exec -t fs /usr/local/freeswitch/bin/fs_cli -x "show calls count"

三、运行效果

这里以监控进程为例演示下使用效果,命令如下:

top -b -n 1 -p 15653

效果如下:

本文涉示例代码,可从如下途径获取:

关注微信公众号(聊聊博文,文末可扫码)后回复 2023031801 获取。

使用python自动监控程序运行过程数据的更多相关文章

  1. Python自动单元测试框架

    原文链接:http://www.ibm.com/developerworks/cn/linux/l-pyunit/ 软件的测试是一件非常乏味的事情,在测试别人编写的软件时尤其如此,程序员通常都只对编写 ...

  2. [转] Python自动单元测试框架

    一.软件测试 大型软件系统的开发是一个很复杂的过程,其中因为人的因素而所产生的错误非常多,因此软件在开发过程必须要有相应的质量保证活动,而软件测试则是保证质量的关键措施.正像软件熵(software ...

  3. 谈谈 Python 程序的运行原理

    因为我的个人网站 restran.net 已经启用,博客园的内容已经不再更新.请访问我的个人网站获取这篇文章的最新内容,谈谈 Python 程序的运行原理 这篇文章准确说是『Python 源码剖析』的 ...

  4. Python基础——安装运行

    Python是如何运行的? 像绝大多数编程语言一样,要在计算机上能够运行python程序,至少需要安装一个最小的Python包:一个Python解释器和支持的库. 安装Python 安装包下载:htt ...

  5. 利用python自动生成verilog模块例化模板

    一.前言 初入职场,一直忙着熟悉工作,就没什么时间更新博客.今天受“利奇马”的影响,只好宅在家中,写写技术文章.芯片设计规模日益庞大,编写脚本成了芯片开发人员必要的软技能.模块端口动不动就几十上百个, ...

  6. sublime_text运行python ctrl+b运行的界面隐藏了怎么重新调出来恢复显示?

    sublime_text运行python ctrl+b运行的界面隐藏了怎么重新调出来恢复显示?搜索了下都是说怎么隐藏的,隐藏后怎么恢复显示的没找到看进程还在运行,但调不出来看运行结果了,console ...

  7. python自动华 (二)

    Python自动化 [第二篇]:Python基础-列表.元组.字典 本节内容 模块初识 .pyc简介 数据类型初识 数据运算 列表.元组操作 字符串操作 字典操作 集合操作 字符编码与转码 一.模块初 ...

  8. Python自动玩"别再踩白块了"小游戏

    开发工具 Python版本:3.6.4 相关模块: numpy模块: CV2模块: pyautogui模块: pyscreenshot模块: 以及一些Python自带的模块. 环境搭建 安装Pytho ...

  9. Python自动补全

    转自:http://blog.linuxeye.com/324.html Python自动补全有vim编辑下和python交互模式下,下面分别介绍如何在这2种情况下实现Tab键自动补全. 一.vim ...

  10. python virtualenv环境运行django

    python virtualenv环境运行django 安装前准备 检查pip版本与python版本是否一致 [root@localhost bin]# whereis pip pip: /usr/b ...

随机推荐

  1. 解决动态class展示问题

    由于部分涉及到隐私,就打马赛克了 比如这个小问题,我有这个动态的class,里面是十几个类似btn的按钮,然后每个btn下面又有子多选框,一开始是我点击那个下面的子级他的父级就被选中,默认选中第一个父 ...

  2. scala调用fastjson JSON.toJSONString()序列化对象出错

    在scala中需要将case class 序列化为string,代码如下 results.map(JSON.toJSONString(_)).foreach(println) case class p ...

  3. 学校——DFS图的遍历

    学校实验 没什么多说的 就是实现一个图的遍历 由于学校已经输入的片段过于晦涩难懂 无法进行 在网上看了别人写的代码 提升了理解代码的一点能力 #include"string.h" ...

  4. yii 自定义form样式适应现成模板

    需求:想使用下边的样式但是使用yii中的表单样式会 <?= $form->field($model, 'attribute_code')->textInput()->label ...

  5. Edge浏览器相关

    Ctrl+T 新建页面 Ctrl+W 关闭页面 不可复制的页面,前加read: 若是不可访问 变read://http:// 阅读可翻译,也可有图片字典 还可用插件: 截图软件:Snipaste  微 ...

  6. mysqld 打开连接卡

    把client的ip写在mysql服务器的/etc/hosts文件里 echo [ip] [hostname] >>/etc/hosts

  7. uniapp+uView单选框多选框使用与模糊搜索

    <template> <!-- 类别筛选组件 --> <view class="timeInput">{{filterArea}} <u- ...

  8. git cherry-pick适用场景详解

    前提条件:有2个分支,分别是master,hotfix,其中master是用于生产环境的发布分支. 场景1:生产环境hotfix. T1时刻,使用master分支发布生产.当时的HEAD的commit ...

  9. redies概述

    1.redis下载路径 Windows:https://github.com/tporadowski/redis/releases Linux:http://redis.io/download 2.安 ...

  10. NOIP2013普及组

    T1]记数问题 试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?例如,在1到11 中,即在1.2.3.4.5.6.7.8.9.10.11中,数字1 出现了4 次. 其实 ...