python笔记--磁盘使用率

方法一:

使用commands.getoutput调用shell命令df获取磁盘使用率:

import commands
>>> import commands
>>> disk_use=commands.getoutput(‘df -h‘)
>>> disk_use
‘Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda2        18G  5.7G   12G  34% /\ntmpfs           931M     0  931M   0% /dev/shm‘
>>> print disk_use.split(‘\n‘)[1].split()[4]
34%

该命令返回df命令执行的结果,然后根据该结果进行处理得到使用率的百分比

方法二(感觉有点麻烦,并且不是很明白):

在网上查了可使用os.statvfs函数处理(返回包含文件描述符fd的文件的文件系统的信息,在unix中有效):

>>> os.statvfs(‘/‘)
posix.statvfs_result(f_bsize=4096, f_frsize=4096, f_blocks=4656351, f_bfree=3172146, f_bavail=2935615, f_files=1183200, f_ffree=1105800, f_favail=1105800, f_flag=4096, f_namemax=255)

返回结果说明:

statvfs.F_BSIZE
Preferred file system block size.
statvfs.F_FRSIZE
Fundamental file system block size.
statvfs.F_BLOCKS
Total number of blocks in the filesystem.
statvfs.F_BFREE
Total number of free blocks.
statvfs.F_BAVAIL
Free blocks available to non-super user.
statvfs.F_FILES
Total number of file nodes.
statvfs.F_FFREE
Total number of free file nodes.
statvfs.F_FAVAIL
Free nodes available to non-super user.
statvfs.F_FLAG
Flags. System dependent: see statvfs() man page.
statvfs.F_NAMEMAX
Maximum file name length.

代码:

>>> import os
>>> os.statvfs(‘/‘)
posix.statvfs_result(f_bsize=4096, f_frsize=4096, f_blocks=4656351, f_bfree=3172146, f_bavail=2935615, f_files=1183200, f_ffree=1105800, f_favail=1105800, f_flag=4096, f_namemax=255)
>>> vfs=os.statvfs(‘/‘)
>>> print ‘%d%%‘ % int((vfs.f_blocks-vfs.f_bfree)/float(vfs.f_blocks)*100)
31%

方法三:

使用os.popen()函数获取shell命令执行结果:

>>> os.popen(‘df -h‘).read()
‘Filesystem      Size  Used Avail Use% Mounted on\n/dev/sda2        18G  5.7G   12G  34% /\ntmpfs           931M     0  931M   0% /dev/shm\n‘

本来想使用os.system来执行df命令获取结果,但是执行之后发现该命令是返回一个exit_status。

>>> os.system(‘df -h‘)
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  5.7G   12G  34% /
tmpfs           931M     0  931M   0% /dev/shm
0

最后面一个0才是这个函数的返回值,并且该返回值是一个int类型。当将该结果转换成列表时,就只有一个元素‘0’:

>>> list(str(os.system(‘df -h‘)))
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2        18G  5.7G   12G  34% /
tmpfs           931M     0  931M   0% /dev/shm
[‘0‘]

所以只能使用os.statvfs和commands.getouput来获取磁盘使用率了,但是不知道为什么两个得到的结果不一样。如果有人看到了帮我指出错误,感激不尽。

时间: 2024-12-29 07:43:31

python笔记--磁盘使用率的相关文章

python获取CPU,内存,磁盘使用率

#!/usr/bin/env python # coding:utf-8 import psutil total_cpu=psutil.cpu_times().user+psutil.cpu_times().idle user_cpu=psutil.cpu_times().user cpu_syl=user_cpu/total_cpu*100 mem = psutil.virtual_memory()   #使用psutil.virtual_memory方法获取内存完整信息 mem_total=

python监测硬盘使用率

python获得磁盘剩余空间statvfs: >>> import os >>> import statvfs >>> vfs=os.statvfs("/home") >>> vfs (4096, 4096, 70959944, 70058799, 66396080, 73269248, 73234981, 73234981, 0, 255) >>> dir(statvfs) ['F_BAVAIL

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1 一.集合 1.set 无序,不重复序列 {}创建,直接写元素 2.set功能 __init__()构造方法,,使用强制转换就会调用此方法 1 set1 = {'year', 'jiujiujiu'} 2 print(type(set1)) 3 # 创建集合 4 s = set() # 创建空集合 5 li = [11, 22, 11, 22] 6 s = set(li) set 3.集合的基本操作 1 # 操作集合 2 s1 = set() 3 s1.a

Python笔记(四)

在<Python笔记(三)>中,我记录关于Python中序列问题的知识.个人觉得确实比Java中的集合框架简单.之前也说了,Python是一种高级面向对象的语言,它的每一个变量都称为对象.今天我接触了面向对象的编程.下面是这篇博客的目录: 1.类与对象 2.输入输出 3.异常 类与对象: 我们都知道面向对象的语言具备四个特性:抽象,继承,封装,多态.Java,C++是这样,Python也不例外.在Python中,我们定义一个类,使用关键字class.形式如下:class classname:.

shell 监控磁盘使用率【转】

方案一: disks=(`df |sed 1d | awk '{print $1,$5}'|tr -d %`) len=${#disks[@]} for ((i=1;i<=$len;i=i+2));do if [ ${disks[i]} -gt 80 ];then echo "${disks[$i-1]} ${disks[$i]}" fi done 方案二: df -Th|awk -F '[ |%]+' 'NR>1 {if($6>80) print $1}' 方案三:

【Python运维脚本】Python监控磁盘

#!/usr/bin/env python # -*- coding=utf-8 -*- #Using GPL v3.3 #Author: [email protected] #Python监控磁盘 """ 1.实现原理:通过SNMP协议获取系统信息,再进行相应的计算和格式化,最后输出结果 2.特别注意:被监控的机器上需要支持snmp.yum install -y net-snmp*安装 """ #!/usr/bin/python import

awk过滤磁盘使用率

过滤出大于某个值的磁盘使用率: #!/bin/bash diskspace=`df -Ph`IFS="\n" for line in $diskspace;do        echo $line | awk '{if(+$5>10) print $1,$5}'done 执行结果: [[email protected] script]# bash diskspace.sh /dev/mapper/VG01-lv_root 14% /dev/sda1 20% /dev/mapper

python笔记 - day7-1 之面向对象编程

python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: sele是什么? self是一个python自动会给传值得参数: 哪个对象执行方法,self就是哪个对象: 构造方法: 类中有一个特殊的方法,__init__,类()自动执行: 面向对象,三大特性: 封装,继承,多态: