如何查看Linux下进程的IO活动状况 00 Hey,Linux

作者&投稿:重俭 (若有异议请与网页底部的电邮联系)
~ 您好,很高兴为您解答。服务器cpu使用率不高,load比较高,所以要查看一下IO。硬盘IO可以通过命令vmstat或iostat获得(也可以用yum安装dstat获得),网络IO可以用iftop命令获取。但是不知道那个进程使用硬盘IO比较高,通过查找没有找到相关命令,只好自己写个脚本进行统计处理。本脚本在CentOS6下(kernel2.6以上)python2.6测试通过。直接运行脚本,默认情况下收集3秒钟数据,显示读写最高的前三个进程。如用参数可以使用命令“pythonfhip.py453”,第一个数位每次收集读写数据的间隔秒数,第二个数是打印出读写最多的n个进程,第三个为运行脚本的次数。因为参数部分写的比较简单那,所以用参数必须3个全写。。#!/bin/python#-*-coding:utf-8-*-#Filename:ind_high_io_process#Revision:1.0#Date:2013-3-8#Author:simonzhang#web:###ENDINITINFOimportosimportreimportsysimporttimefromstringimportstrip####sys_proc_path='/proc/'re_find_process_number='^\d+$'#####通过/proc/$pid/io获取读写信息####defcollect_info():_tmp={}re_find_process_dir=re.compile(re_find_process_number)foriinos.listdir(sys_proc_path):ifre_find_process_dir.search(i):#获得进程名process_name=open("%s%s/stat"%(sys_proc_path,i),"rb").read().split("")[1]#读取io信息rw_io=open("%s%s/io"%(sys_proc_path,i),"rb").readlines()for_infoinrw_io:cut_info=strip(_info).split(':')ifstrip(cut_info[0])=="read_bytes":read_io=int(strip(cut_info[1]))ifstrip(cut_info[0])=="write_bytes":write_io=int(strip(cut_info[1]))_tmp[i]={"name":process_name,"read_bytes":read_io,"write_bytes":write_io}return_tmpdefmain(_sleep_time,_list_num):_sort_read_dict={}_sort_write_dict={}#获取系统读写数据process_info_list_frist=collect_info()time.sleep(_sleep_time)process_info_list_second=collect_info()#将读数据和写数据进行分组,写入两个字典中forloopinprocess_info_list_second.keys():second_read_v=process_info_list_second[loop]["read_bytes"]second_write_v=process_info_list_second[loop]["write_bytes"]try:frist_read_v=process_info_list_frist[loop]["read_bytes"]except:frist_read_v=0try:frist_write_v=process_info_list_frist[loop]["write_bytes"]except:frist_write_v=0#计算第二次获得数据域第一次获得数据的差_sort_read_dict[loop]=second_read_v-frist_read_v_sort_write_dict[loop]=second_write_v-frist_write_v#将读写数据进行排序sort_read_dict=sorted(_sort_read_dict.items(),key=lambda_sort_read_dict:_sort_read_dict[1],reverse=True)sort_write_dict=sorted(_sort_write_dict.items(),key=lambda_sort_write_dict:_sort_write_dict[1],reverse=True)#打印统计结果print"pidprocessread(bytes)pidprocesswrite(btyes)"for_numinrange(_list_num):read_pid=sort_read_dict[_num][0]write_pid=sort_write_dict[_num][0]res="%s"%read_pidres+=""*(8-len(read_pid))+process_info_list_second[read_pid]["name"]res+=""*(12-len(process_info_list_second[read_pid]["name"]))+"%s"%sort_read_dict[_num][1]res+=""*(12-len("%s"%sort_read_dict[_num][1]))+write_pidres+=""*(8-len(write_pid))+process_info_list_second[write_pid]["name"]res+=""*(12-len("%s"%process_info_list_second[write_pid]["name"]))+"%s"%sort_write_dict[_num][1]printresprint"\n"*1if__name__=='__main__':try:_sleep_time=sys.argv[1]except:_sleep_time=3try:_num=sys.argv[2]except:_num=3try:loop=sys.argv[3]except:loop=1foriinrange(int(loop)):main(int(_sleep_time),int(_num))如若满意,请点击【采纳答案】,如若还有问题,请点击【追问】希望我的回答对您有所帮助,望采纳!~O(∩_∩)O~

恐怕看查看磁盘总体IO性能想linux技术我讨论如题,使用什么命令?


查看linux安装软件查看linux安装软件
如何在虚拟机上的redhatlinux系统下查看已安装的软件?首先打开终端,在输入mount-oloop\/ISO镜像文件的路径\/mnt\/cdrom 然后进入\/mnt\/cdrom的目录下就可以看到ISO文件里的东西了,好像ISO文件在linux下不能解压 不懂再问我 如何查看linux系统安装了哪些服务?因不同版本的操作系统可能使用的命令不一样或者...

linux怎么查看操作系统版本
2,输入"cat \/proc\/version",说明正在运行的内核版本。3,输入"cat \/etc\/issue", 显示的是发行版本信息 4,lsb_release -a (适用于所有的linux,包括Redhat、SuSE、Debian等发行版,但是在debian下要安装lsb)注意事项 如果不知道命令的意思.可以通过 "man 命令"可以查看它的使用方式.及详细信息....

如何查看进程linux如何查看进程linux
linux怎么查看某个进程执行的文件路径?linux下进程运行后,进程信息存储在\/proc\/进程id目录下面,进程id查看命令ps-ef|grep进程名,vi\/proc\/进程id\/environ搜索PWD字段,则是该进程运行所在目录 linux中,怎么查看进程所对应的服务名呢?1。查看进程占用的端口号netstat-anp#netstat-anp|grepsyslogudp000。

Linux系统下如何查看已经登录用户
虽然前面介绍了用户管理,但是那部分主要是管理用户的帐号,也就静态的用户列表。而LINUX是个多用户系统,一旦连接到网络中,它可以同时为多个登录用户提供服务。系统管理员可以随时了解系统中有那些用户,用户都在进行什么操作。查看用户的操作 系统管理员若想知道某一时刻用户的行为,只需要输入命令W 即可,...

linux源码查看版本linux源码查看
因为在不同的Linux发行版上。源码的获取方法并不同样。所以以下以Ubuntu和CentOS这两种经常使用的Linux发行版为样例进行说明。 1、Ubuntu中系统命令源码的获取方法 以32位Ubuntu14.04下,获取ls命令的源码为例,能够使用例如以下的方法下载源码: 1)使用which命令查看ls命令的位置,例如以下: whichls#输出:\/bin\/ls 2)使...

查看linux的ssh端口查看Linux的ssh
如何在linux下配置ssh和sftp使用不同的端口号? 1、两个deamon 要实现ssh和sftp分离,分别监听不同的端口,可以通过创建两个‘\/usr\/sbin\/sshd’后台程序,一个监听22端口(ssh),一个监听20022端口(sftp),为了区分ssh和sftp服务的后台程序,这里将ssh服务的后台程序保持为\/usr\/sbin\/sshd,而将sftp服务的后台程序改为\/...

linux命令查看文件内容linux命令查看
ping命令:它用于向网络主机发送ICMPECHO_REQUEST数据包。linux查看磁盘命令?df命令;df是来自于coreutils软件包,系统安装时,就自带的;我们通过这个命令可以查看磁盘的使用情况以及文件系统被挂载的位置;举例:Filesystem容量已用可用已用%挂载点。我们从中可以看到,系统安装在\/dev\/hda8;还有一个56G的...

Linux系统日志怎么查看
journalctl命令:显示系统日志journal的条目。例如:journalctl 2、通过图形界面 系统监视器:提供了一个可视化的日志查看界面。在Ubuntu系统中,您可以在应用程序菜单中找到它。日志分析器:专用于分析和查看日志文件的工具。例如,Logwatch和Logstash。3、常用的日志文件 Linux系统中的常见日志文件包括:\/var\/...

在windows下如何查看或修改linux分区中的数据(ext3格式的分区)?_百度...
Windows下查看LINUX 系统下ext3格式分区的三种常用方法 一、Explore2fs 在Windows中,打开浏览器,打开网址http:\/\/www.chrysocome.net\/explore2fs。下载最新的explore2fs压缩文件,然后解压。在解压出来的文件夹,你会找到explore2fs可执行文件。双击开始安装它:启动Explore2fs文件浏览器;现在你可浏览你的Linux分区...

linux查看已存在的用户
tail-fping.log(查看日志)1which命令在linux要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:which查看可执行文件的位置。whereis查看文件的位置。locate配合数据库查看文件位置。linux怎么查看已创建的所有用户您好,查看linux下所有用户步骤:第一步:首先打开电脑中安装好的Linux【VMware...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网