linux查看cpu占用高的进程,Linux查看CPU、内存、IO占用高的进程

#!/bin/python#-*- coding:utf-8 -*-#Filename: ind_high_io_process#Revision: 1.0#Date: 2013-3-8#Author: simonzhang#web: www.simonzhang.net#Email: simon-zzm@163.com### END INIT INFO

importosimportreimportsysimporttimefrom string importstrip

sys_proc_path= '/proc/'re_find_process_number= '^d+$'

#Get IO information from /proc/$pid/io

defcollect_info():

_tmp={}

re_find_process_dir=re.compile(re_find_process_number)for i inos.listdir(sys_proc_path):ifre_find_process_dir.search(i):#get process name from /proc/${pid}/stat

process_name = open("%s%s/stat" % (sys_proc_path, i), "rb").read().split(" ")[1]#get io information from /proc/${pid}/io

rw_io = open("%s%s/io" % (sys_proc_path, i), "rb").readlines()for _info inrw_io:

cut_info= strip(_info).split(':')if strip(cut_info[0]) == "read_bytes":

read_io= int(strip(cut_info[1]))if strip(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={}#Get system io information

process_info_list_frist =collect_info()

time.sleep(_sleep_time)

process_info_list_second=collect_info()for loop inprocess_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#compute

_sort_read_dict[loop] = second_read_v -frist_read_v

_sort_write_dict[loop]= second_write_v -frist_write_v#sort

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 result

print "pid process read(bytes) pid process write(btyes)"

for _num inrange(_list_num):

read_pid=sort_read_dict[_num][0]

write_pid=sort_write_dict[_num][0]

res= "%s" %read_pid

res+= " " * (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_pid

res+= " " * (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 "" * 1

if __name__ == '__main__':try:

_sleep_time= sys.argv[1]except:

_sleep_time= 3

try:

_num= sys.argv[2]except:

_num= 3

try:

loop= sys.argv[3]except:

loop= 1

for i inrange(int(loop)):

main(int(_sleep_time), int(_num))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值