Python计算Linux服务器所有挂载磁盘的使用率

该代码实现了获取Linux系统中各磁盘挂载点的使用情况,包括挂载点路径、已使用空间和总空间,并计算整体磁盘使用率。通过`df`命令获取挂载点信息,使用`os.statvfs`获取磁盘使用详细信息,最后计算并返回总的磁盘容量和使用率。
摘要由CSDN通过智能技术生成

0. 依赖包

import os
import commands
from collections import namedtuple

1. 获取磁盘挂载点路径

def getPath():
    output = commands.getoutput("df -h")
    outputresult = output.split("\n")

    List = []
    for num in range(1, len(outputresult)):

        if len(outputresult[num].split()) > 6:
            temp = outputresult[num].split()[0:5]
            temp.insert(len(temp)+1, outputresult[num][outputresult[num].find("%")+1:])
            List.append(temp)
        else:
            temp = outputresult[num].split()
            List.append(temp[5])
    return List

2. 获取所有挂载点的已使用空间大小

def disk_usage(path):
    """Return disk usage associated with path."""
    usage_ntuple = namedtuple('usage', 'total used free percent')
    st = os.statvfs(path)
    free = (st.f_bavail * st.f_frsize)
    total = (st.f_blocks * st.f_frsize)
    used = (st.f_blocks - st.f_bfree) * st.f_frsize
    try:
        percent = (float(used) / total) * 100
    except ZeroDivisionError:
        percent = 0
    return usage_ntuple(total, used, free, round(percent, 1))

3. 计算使用率

def get_disk_info():
    pathlist = getPath()

    # total size
    totalDiskList = []
    total_sum = 0
    for path in pathlist:
        disktotal = disk_usage(path)[0] / 1073741824 + 1
        totalDiskList.append(disktotal)
    print totalDiskList
    for count in totalDiskList:
        total_sum += count

    # total used size
    totalUsedDiskList = []
    used_sum = 0
    for path in pathlist:
        disktotal = disk_usage(path)[1] / 1073741824 + 1 # change to GB
        totalUsedDiskList.append(disktotal)
    print totalUsedDiskList
    for count in totalUsedDiskList:
        used_sum += count

    print total_sum, used_sum
    usage_percent = format((float(used_sum) / float(total_sum)), '.2f')

    return total_sum, usage_percent

4. 结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值