您的位置:首页 > 运维架构 > Linux

centos下监控系统io读写脚本

2016-12-26 00:00 169 查看
概要:由于服务器有台主机在某个时间段会突然io读写占据百分之80以上,固写此脚本,来找出系统哪个进程那个时间点,占据了系统的io读写。

iotop参数说明:
-o :只显示有io操作的进程
-b :批量显示,无交互。主要用作记录到文件。
-n NUM:显示NUM次,主要用于非交互式模式,代表要执行次数。
-d SEC:间隔SEC秒显示一次。
-p PID:监控的进程pid
-u USER:监控的进程用户

如果没有iotop软件,安装命令如下:yum install iotop

监控IO读写脚本生成日志:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import subprocess
import os
import datetime
i=datetime.datetime.now() #生成当前系统时间函数
filename="%s年%s月%s日"%(i.year,i.month,i.day)+"-io.log"#文件名命名为当前系统时间的年月日
cmd="/usr/sbin/iotop -obt -n 30 | egrep -v \"Total DISK READ : 0.00 B/s '| Total DISK WRITE : 0.00 B/s|Actual DISK READ: 0.00 B/s '| Actual DISK WRITE: 0.00 B/s|TIME TID PRIO USER DISK READ DISK WRITE SWAPIN IO COMMAND\"" #调用系统命令,egrep -v代表反向选取内容
fd=open(str(filename),"a") #打开文件,如果不存在,创建文件,其中a代表往文件里面追加内容
data=subprocess.Popen(cmd,stdout=subprocess.PIPE,shell=True) #输入系统命令,获取到值,并将值输出传给data
fd.write(data.stdout.read()) #将data的值写入到文件里
fd.close() #关闭打开文件
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: