python3实现磁盘空间监控


Posted in Python onJune 21, 2018

本文实例为大家分享了python3磁盘空间监控的具体代码,供大家参考,具体内容如下

软硬件环境

python3
apscheduler

前言

在做频繁操作磁盘的python项目时,经常会碰到磁盘空间不足的情况,这个时候,工程应该要有自己的处理模块,当磁盘利用率到达某个点时,发出警告并停止程序的运行。本文就利用Python3中的apscheduler模块来处理这样的问题。

代码实践

import os
import sys
import signal
import logging

from apscheduler.schedulers.background import BackgroundScheduler
from apscheduler.triggers.interval import IntervalTrigger

# 开启磁盘空间检测
sched = BackgroundScheduler()

# 间隔5分钟开启一个检查
intervalTrigger = IntervalTrigger(minutes=5)

# 给检查任务设个id,方便任务的取消
sched.add_job(spaceMonitorJob, trigger=intervalTrigger, id='id_space_monitor')
sched.start()

# 禁止apscheduler相关信息屏幕输出
logging.getLogger('apscheduler.executors.default').propagate = False

方法spaceMonitorJob代码如下

def spaceMonitorJob():
 '''
 当磁盘(切片存储的目录)利用率超过90%,程序退出
 :return:
 '''

 try:
  st = os.statvfs('/')
  total = st.f_blocks * st.f_frsize
  used = (st.f_blocks - st.f_bfree) * st.f_frsize
 except FileNotFoundError:
  print('check webroot space error.')
  logger.error('check webroot space error.')

  # 移除任务,病关闭sched任务
  sched.remove_job(job_id='id_space_monitor')
  sched.shutdown(wait=False)
  sys.exit(-3)

 if used / total > 0.9:
  print('No enough space.')
  logger.debug('No enough space.')
  sched.remove_job(job_id='id_space_monitor')
  sched.shutdown(wait=False)

  # 杀掉进程
  os.killpg(os.getpgid(os.getpid()), signal.SIGKILL)

  # 退出
  exit(-3)

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python socket网络编程步骤详解(socket套接字使用)
Dec 06 Python
Python3里的super()和__class__使用介绍
Apr 23 Python
Linux下用Python脚本监控目录变化代码分享
May 21 Python
Python 爬虫学习笔记之正则表达式
Sep 21 Python
Python实现上下班抢个顺风单脚本
Feb 07 Python
python requests更换代理适用于IP频率限制的方法
Aug 21 Python
python 监测内存和cpu的使用率实例
Nov 28 Python
python打印n位数“水仙花数”(实例代码)
Dec 25 Python
Python 实现向word(docx)中输出
Feb 13 Python
django-csrf使用和禁用方式
Mar 13 Python
Django模型验证器介绍与源码分析
Sep 08 Python
如何理解及使用Python闭包
Jun 01 Python
Python实现的远程登录windows系统功能示例
Jun 21 #Python
python3监控CentOS磁盘空间脚本
Jun 21 #Python
python实现猜单词小游戏
May 22 #Python
python2.x实现人民币转大写人民币
Jun 20 #Python
python实现猜数字小游戏
Mar 24 #Python
python实现人民币大写转换
Jun 20 #Python
python人民币小写转大写辅助工具
Jun 20 #Python
You might like
PHP使用file_get_content设置头信息的方法
2016/02/14 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
Javascript 入门基础学习
2010/03/10 Javascript
jQuery easyui datagrid动态查询数据实例讲解
2013/02/26 Javascript
JS+CSS实现可以凹陷显示选中单元格的方法
2015/03/02 Javascript
jQuery实现定时读取分析xml文件的方法
2015/07/16 Javascript
vue实现可增删查改的成绩单
2016/10/27 Javascript
js实现拖拽上传图片功能
2017/08/01 Javascript
jQuery菜单实例(全选,反选,取消)
2017/08/28 jQuery
vue中子组件向父组件传递数据的实例代码(实现加减功能)
2018/04/20 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
npm的lock机制解析
2019/06/20 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
javascript实现前端分页效果
2020/06/24 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
vue 通过绑定事件获取当前行的id操作
2020/07/27 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
[05:31]干嘛呢兄弟!DOTA2 TI9语音轮盘部分出处
2019/05/14 DOTA
Python命名空间详解
2014/08/18 Python
Python下的subprocess模块的入门指引
2015/04/16 Python
python中子类调用父类函数的方法示例
2017/08/18 Python
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
python安装模块如何通过setup.py安装(超简单)
2018/05/05 Python
浅谈Python的条件判断语句if/else语句
2019/03/21 Python
python实现发送form-data数据的方法详解
2019/09/27 Python
详解python tkinter模块安装过程
2020/01/06 Python
基于Python的接口自动化读写excel文件的方法
2021/01/15 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
Europcar英国:英国汽车和货车租赁
2017/01/21 全球购物
全球速卖通法国在线交易平台:AliExpress法国
2017/07/07 全球购物
旅游管理毕业生自荐书
2014/02/02 职场文书
《陈涉世家》教学反思
2014/04/12 职场文书
态度决定一切演讲稿
2014/05/20 职场文书
python微信智能AI机器人实现多种支付方式
2022/04/12 Python
GTX1660显卡搭配显示器推荐
2022/04/19 数码科技
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android