Linux下使用python调用top命令获得CPU利用率_python

本文定位:想通过python调用top命令获取cpu使用率但暂时没有思路的情况。
如果单纯为了获得cpu的利用率,通过top命令重定向可以轻松实现,命令如下:

复制代码 代码如下:

top -bi > cpuHistory.log

复制代码 代码如下:

top -bi | tee  cpuHistory.log

这个就不解释了,不懂的朋友查询下top的帮助文档。这里要实现的是通过python调用top命令,并获得cpu的利用率信息。
用过popen的朋友很快就能想到类似如下的代码(这个是我第一次写的代码,*_*):

复制代码 代码如下:

#! /usr/bin/python

import os,time

time2sleep = 1.5
while True:
        print os.popen('top -bi -n 1').read().split('\n')[2]
        time.sleep(time2sleep)

原理看起来没错,可是跑起来就出问题了:cpu的idle值一直不变!!!
原因在于执行的命令“top -bi -n 1”:单独执行这个命令,你会发现输出结果中cpu的idle值就是一直不变的。
所以不能这样写……
在终端执行“top -bi -n 2”命令,你会发现第二个值每次都在变化,这个就是我们想要结果。
考虑到时间问题,命令这样写会更好:“top -bi -n 2 -d 0.02”
代码如下:

复制代码 代码如下:

#! /usr/bin/python
'''
   File      : cpuRate.py
   Author    : Mike
   E-Mail    : Mike_Zhang@live.com
 '''
import os,time

time2sleep = 2.5
while True:
        print int(time.time()),
        print os.popen('top -bi -n 2 -d 0.02').read().split('\n\n\n')[1].split('\n')[2]
        time.sleep(time2sleep)

执行效果如下:

复制代码 代码如下:

$ ./cpuRate.py
1328109437 Cpu(s): 10.0%us, 20.0%sy,  0.0%ni, 70.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
1328109441 Cpu(s):  0.0%us, 16.7%sy,  0.0%ni, 83.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
1328109444 Cpu(s):  0.0%us, 16.7%sy,  0.0%ni, 83.3%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
1328109447 Cpu(s): 12.5%us, 12.5%sy,  0.0%ni, 75.0%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st

好,就这些了,希望对你有帮助。

时间: 2024-10-02 06:10:34

Linux下使用python调用top命令获得CPU利用率_python的相关文章

linux 下c语言调用终端命令

#include <stdio.h> #include <stdlib.h> #include <string.h> #define MAX_SIZE 1024 int main() { FILE *fstream = NULL; int error=0; char buff[MAX_SIZE]={0}; if(NULL == (fstream=popen("ls -r","w")))//这个应该是写方式的管道 { fprintf

linux 下用java调用sudo命令能实现吗

问题描述 Processproc=Runtime.getRuntime().exec("cat/proc/stat");是可以的但如果命令需要root权限才可以,要在命令前加sudo,该怎么办Processproc=Runtime.getRuntime().exec("sudotcpdump");貌似执行没有什么结果,而且即使可以也还得手动输入密码吧,希望高人指点,谢谢 解决方案 解决方案二:寫成批次檔.解决方案三:哦,谢谢,不过第一次听这个概念,我学学,另外能不能

python调用cmd命令行制作刷博器_python

复制代码 代码如下: import webbrowser as webimport timeimport os count=0while count<10:    count=count+1    #你要刷的博客    web.open_new_tab("这里是博客地址")    time.sleep(1)else:    os.system('taskkill /F /IM  360se.exe') 这里主要学到三个知识点: 1.Python的线程原来是在time模块下 2.P

linux下磁盘容量和df命令原理

df命令是linux下查看磁盘容量的常用命令.可以列出block数量,总容量,使用率等.这次使用python编写一个类似功能的模块,顺便学习一下df的原理. 直接输入df命令可以看到 Filesystem 1k-blocks Used Available Use% Mounted on 磁盘设备 blocks个数 使用的容量 有效容量 空闲率 挂载点 接下来就是这些参数怎么来的问题. /etc/mtab文件 /etc/mtab可以读出的是已经挂载的盘的信息,包括磁盘设备,挂载点,文件系统类型等.

Linux下非交互式远程执行命令脚本

  Linux下非交互式远程执行命令脚本(比ssh更好的方式) openssh在每台机器上都有,ssh与scp经常出现在我们的生活中. 然而当要管理的机器规模越来越大时,ssh登陆到目标机器进行管理就变得不现实了. 虽然可以直接在ssh后面接命令的方式,进行命令的执行. 但是ssh的严格的权限认证使得我们不得不输入密码,或是建立信任关系,很难去自定义一个特定的认证方式. 基于ssh的这种不足.于是笔者就写了一个jetfire,这个工具.比ssh多的一个重要的功能就是可以自定义认证方式,顺便避免了

linux 下shell脚本调用 (小白求教)

问题描述 linux 下shell脚本调用 (小白求教) Shell脚本怎么实现调用一个可执行文件并在脚本中执行该文件中的命令? (可执行文件打开后是命令行模式) 解决方案 啥意思?脚本里调用脚本?直接以廖本名调用啊 解决方案二: 这个是不是类似,在shell命令行窗口中打开另外一个命令行? 解决方案三: 用fork,system等,可以获取它的管道输出等 解决方案四: 文件中的命令? 没明白什么意思? 解决方案五: 可以尝试使用source函数................. 解决方案六:

python 读写-python 调用windows 命令行

问题描述 python 调用windows 命令行 def start(count): log_name ='c:log' +str(count) cmd = 'c:tooltool.exe > ' + log_name os.popen(cmd) 在windows环境下执行tool.exe重定向 循环处理多了 会报错 close failed in file object destructor:IOError: [ERROR 0] Error请问是什么原因? 解决方案 导出的文件打开失败?或者

《Linux指令从入门到精通》——4.3 Linux下全屏幕文本编辑器的命令行方式

4.3 Linux下全屏幕文本编辑器的命令行方式 4.3.1 emacs:文本编辑指令 初步了解emacs编辑器的基础功能,学会使用emacs指令来进行文本编辑.电邮收发等各项功能. emacs [-可选参数] [文件名] Emacs (Editor MACroS编辑器宏) 是一个功能强大的文本编辑器.该指令不仅可以用来编辑文本文件,还可以收发电邮.编辑远程文档.通过Telnet登录远程主机.登录IRC.查看日历.支持多种编程语言(如C/C++,Perl,Python,Lisp等).管理日程和个

在 Linux 下你所不知道的 df 命令的那些功能

在 Linux 下你所不知道的 df 命令的那些功能 问题: 我知道在Linux上我可以用df命令来查看磁盘使用空间.你能告诉我df命令的实际例子使我可以最大限度得利用它吗? 对于磁盘存储方面,有很多命令行或基于GUI的工具,它可以告诉你关于当前磁盘空间的使用情况.这些工具用各种人们可读的格式展示磁盘利用率的详细信息,比如易于理解的总结,详细的统计信息或直观的可视化报告.如果你只想知道不同文件系统有多少空闲的磁盘空间,那么df命令可能是你所需要的. df命令可以展示任何"mounted"