
最近学习了Python,试图将其融入日常的工作中,先从一些简单的小案例开始实验吧,在实例中去提升和探究更复杂的使用方法。
需求例如,目前有一个nfs挂载出来的路径/scratch01,我们需要监控它的使用量不超过90%。如果超过,提出警告,并且进入该路径中,找出使用量最大的文件夹,一起输出。
第一步判断指定路径当前使用量,(linux中使用 df -h可以看到的Size Used Avail Use%等信息),如果超过规定百分比,则输出日志/告警。
import os
import sys
import signal
import logging
def SpaceMonitor(path):
'''
This alarm is generated when the disk usage exceeds 90%
:return:
'''
try:
st = os.statvfs(path)
total = st.f_blocks * st.f_frsize
# 文件系统数据块总数 * 分栈大小
used = (st.f_blocks - st.f_bfree) * st.f_frsize
# (文件系统数据块总数 - 可用块数)* 分栈大小
logging.basicConfig(filename='example.log', format='%(asctime)s:%(levelname)s:%(message)s', level=logging.DEBUG)
logging.info('Start')
except FileNotFoundError:
print('File path Not Found Error')
logging.error('File path Not Found Error')
if used / total > 0.5 :
# 这里设定50%为了测试,成功后可更改为80%、90%
print('No enough space')
logging.debug('No enough space!')
logging.info('Finished')
path = '/scratch01'
SpaceMonitor(path)
以上实现了对指定路径信息的读取和判断
涉及模块os、模块logging
1、os.statvfs([path])方法,详细参考:https://www.runoob.com/python/os-statvfs.html
2、logging.basicConfig(filename=‘example.log’, format=’%(asctime)s:%(levelname)s:%(message)s’, level=logging.DEBUG)
指定日志输出文件,文件格式,及输出的level,debug即所有的信息都输入进去