首页 > 代码库 > Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本

Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本

[本文出自天外归云的博客园]

网上搜,东拼西凑,组装了一个可以查Linux服务器CPU使用率、内存使用率、磁盘空间占用率、负载情况的python脚本。

脚本内容如下:

# -*- coding:utf-8 -*- - import os, timelast_worktime=0last_idletime=0def get_cpu():        global last_worktime, last_idletime        f=open("/proc/stat","r")        line=""        while not "cpu " in line: line=f.readline()        f.close()        spl=line.split(" ")        worktime=int(spl[2])+int(spl[3])+int(spl[4])        idletime=int(spl[5])        dworktime=(worktime-last_worktime)        didletime=(idletime-last_idletime)        rate=float(dworktime)/(didletime+dworktime)        last_worktime=worktime        last_idletime=idletime        if(last_worktime==0): return 0        return ratedef get_mem_usage_percent():    try:        f = open(/proc/meminfo, r)        for line in f:            if line.startswith(MemTotal:):                mem_total = int(line.split()[1])            elif line.startswith(MemFree:):                mem_free = int(line.split()[1])            elif line.startswith(Buffers:):                mem_buffer = int(line.split()[1])            elif line.startswith(Cached:):                mem_cache = int(line.split()[1])            elif line.startswith(SwapTotal:):                vmem_total = int(line.split()[1])            elif line.startswith(SwapFree:):                vmem_free = int(line.split()[1])            else:                continue        f.close()    except:        return None    physical_percent = usage_percent(mem_total - (mem_free + mem_buffer + mem_cache), mem_total)    virtual_percent = 0    if vmem_total > 0:        virtual_percent = usage_percent((vmem_total - vmem_free), vmem_total)    return physical_percent, virtual_percentdef usage_percent(use, total):    try:        ret = (float(use) / total) * 100    except ZeroDivisionError:        raise Exception("ERROR - zero division error")    return retstatvfs = os.statvfs(/)total_disk_space = statvfs.f_frsize * statvfs.f_blocksfree_disk_space = statvfs.f_frsize * statvfs.f_bfreedisk_usage = (total_disk_space - free_disk_space) * 100.0 / total_disk_spacedisk_usage = int(disk_usage)disk_tip = "硬盘空间使用率(最大100%):"+str(disk_usage)+"%"print(disk_tip)mem_usage = get_mem_usage_percent()mem_usage = int(mem_usage[0])mem_tip = "物理内存使用率(最大100%):"+str(mem_usage)+"%"print(mem_tip)cpu_usage = int(get_cpu()*100)cpu_tip = "CPU使用率(最大100%):"+str(cpu_usage)+"%"print(cpu_tip)load_average = os.getloadavg()load_tip = "系统负载(三个数值中有一个超过3就是高):"+str(load_average)print(load_tip)

在Linux服务器上touch一个py文件,把以上内容粘贴进去并保存。运行python脚本,效果如下:

技术分享

一目了然。以后再出现访问后台接口502、无返回的情况,在后台服务器执行一下脚本,看看是不是这方面引起的问题,是不是内存占用过高,是不是磁盘满了等等。方便后台服务器环境问题的定位,以便联系相关的开发或运维来协助解决问题。

Linux服务器CPU、内存、磁盘空间、负载情况查看python脚本