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函数式编程
Jun 09 Python
基于python 字符编码的理解
Sep 02 Python
Tensorflow 自带可视化Tensorboard使用方法(附项目代码)
Feb 10 Python
Python实现的redis分布式锁功能示例
May 29 Python
python检测空间储存剩余大小和指定文件夹内存占用的实例
Jun 11 Python
对python中array.sum(axis=?)的用法介绍
Jun 28 Python
Python使用matplotlib实现基础绘图功能示例
Jul 03 Python
Tensorflow 多线程与多进程数据加载实例
Feb 05 Python
Python如何把多个PDF文件合并代码实例
Feb 13 Python
Python环境下安装PyGame和PyOpenGL的方法
Mar 25 Python
python 数据库查询返回list或tuple实例
May 15 Python
基于Python词云分析政府工作报告关键词
Jun 02 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 Xdebug的安装与使用详解
2013/06/20 PHP
深入解析php中的foreach函数
2013/08/31 PHP
Codeigniter中禁止A Database Error Occurred错误提示的方法
2014/06/12 PHP
PHP实现清除wordpress里恶意代码
2015/10/21 PHP
php实现smarty模板无限极分类的方法
2015/12/07 PHP
WordPress中创建用户角色的相关PHP函数使用详解
2015/12/25 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
Lazy Load 延迟加载图片的 jQuery 插件
2010/02/06 Javascript
javascript相关事件的几个概念
2015/05/21 Javascript
JavaScript中的Math.atan2()方法使用详解
2015/06/15 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
逻辑表达式中与或非的用法详解
2016/06/06 Javascript
jQuery实现导航高亮的方法【附demo源码下载】
2016/11/09 Javascript
禁用backspace网页回退功能的实现代码
2016/11/15 Javascript
js实现右键菜单功能
2016/11/28 Javascript
jQuery实现的简单悬浮层功能完整实例
2017/01/23 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
JS解决移动web开发手机输入框弹出的问题
2017/03/31 Javascript
JS实现标签页切换效果
2017/05/04 Javascript
JavaScript取得gridview中获取checkbox选中的值
2017/07/24 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
利用原生的JavaScript实现简单拼图游戏
2018/11/18 Javascript
vue项目首屏打开速度慢的解决方法
2019/03/31 Javascript
AjaxFileUpload.js实现异步上传文件功能
2019/04/19 Javascript
Vue+Node实现的商城用户管理功能示例
2019/12/23 Javascript
JS数组方法shift()、unshift()用法实例分析
2020/01/18 Javascript
node.js使用zlib模块进行数据压缩和解压操作示例
2020/02/12 Javascript
python使用电子邮件模块smtplib的方法
2016/08/28 Python
python merge、concat合并数据集的实例讲解
2018/04/12 Python
Python使用folium excel绘制point
2019/01/03 Python
python requests.get带header
2020/05/05 Python
使用phonegap克隆和删除联系人的实现方法
2017/03/31 HTML / CSS
美国知名珠宝首饰品牌:Gemvara
2017/10/06 全球购物
英国Office鞋店德国网站:在线购买鞋子、靴子和运动鞋
2018/12/19 全球购物
mysql有关权限的表都有哪几个
2015/04/22 面试题
办公室经理岗位职责
2014/01/01 职场文书