python3实现磁盘空间监控

本文实例为大家分享了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)

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

(0)

相关推荐

  • python3实现windows下同名进程监控

    python3实现windows下同名进程监控,供大家参考,具体内容如下 公司老版的SVN服务器的svn服务经常意外关闭,需要写个简单的监控脚本监控一下: 首先多个SVN服务使用不同的端口,使用wmic命令查看所有SVN进程占用的端口以此来判断目标服务是否存活,wimc命令如下: wmic process where caption="svn.exe" get commandline /value 然后用正则取出标准输出中的端口,用来比对: def get_alive_port(pro

  • python3读取csv和xlsx文件的实例

    基于win10系统,python3.6 读取csv 使用csv函数包,安装 pip install csv 使用方法: import csv def fileload(filename = '待读取.csv'): csvfile = open(filename, encoding = 'utf-8') data = csv.reader(csvfile) dataset = [] for line in data: dataset.append(line) csvfile.close() ret

  • Python3导入CSV文件的实例(跟Python2有些许的不同)

    导入CSV文件导入数据的步骤 ①打开xxx.csv文件 ②首先读取文件头 ③然后读取剩余头 ④当发生错误时抛出异常 读取完所有内容后,打印文件头和剩余所有行 代码: import csv filename = 'enrollments.csv' data = [] try: with open(filename)as f: reader = csv.reader(f) header = next(reader) data = [row for row in reader] except: pas

  • Python3用tkinter和PIL实现看图工具

    需求 想做看图工具的,必然要支持jpg.png等常见格式,但tkinter是个纯粹的GUI库,不像GTK.QT那样大而全,所以只支持gif和ppm两种格式,局限很大,必须搭配图像处理库,才能实现基本的看图功能 在python生态系统里,最常用的图像处理库是PIL Python3下库的安装 这两个库在python3下跟python2有一定差异: tkinter首字母变成小写 PIL官方还不支持Python3,但有个fork叫Pillow,可以替代官方并且接口保持不变,需要pip install P

  • Python3中详解fabfile的编写

    fab命令好似结合我们编写的fabfile.py(其它文件名必须添加-f filename应用)来搭配使用的,部分命令行参数可以通过相应的方法来替代,使之更加灵活,例如"-H 192.168.56.133,192.168.56.134",我们可以通过定义env.hosts来实现,如"env.hosts=['192.168.56.133,192.168.56.134']".fabfile的主体由多个自定义的任务函数组成,不同任务实现不同的操作逻辑. 全局属性设定 en

  • 浅谈Python2、Python3相对路径、绝对路径导入方法

    os.path.dirname() 获取父目录 os.path.basename() #获取文件名或者文件夹名 python2缺省为相对路径导入,python3缺省为绝对路径导入 python2绝对路径导入 from __future__ import absolute_import python2缺省会搜索上一级目录.上上级目录 解决方案: import platform pver=platform.python_version() pversion= int(pver.split('.')[

  • Python3.4 tkinter,PIL图片转换

    先给大家分享一下全部代码 import os from PIL import Image import tkinter import tkinter.filedialog import tkinter.messagebox class Window(): def __init__(self): self.root = root = tkinter.Tk() self.menu = tkinter.Menu(root) self.submenu = tkinter.Menu(self.menu,

  • python3实现域名查询和whois查询功能

    1. 域名查询 万网提供了域名查询接口,接口采用HTTP协议: 接口URL:http://panda.www.net.cn/cgi-bin/check.cgi 接口参数:area_domain,接口参数值为标准域名,例:doucube.com 调用举例: http://panda.www.net.cn/cgi-bin/check.cgi?area_domain=doucube.com 返回: <?xml version="1.0" encoding="gb2312&qu

  • python3监控CentOS磁盘空间脚本

    Python脚本监控CentOS磁盘空间,任何一个分区空间使用大于80%即发邮件给到指定邮箱. monitor.py #-*- coding: utf-8 -*- import socket import subprocess import smtplib from email.mime.text import MIMEText sender="xxx.xx@xxx.com" receiver= ["xxx.xx@xxx.com"] smtpHost="1

  • 详解python3中tkinter知识点

    #导入tkinter模块,以及导入ttk模块,tkinter是python结合tk的标准接口,ttk是TK8.5之后加入的"主题化工具包" from tkinter import * from tkinter import ttk #定义的计算函数,完成英尺到米的换算 def calculate(*args): try: value = float(feet.get()) meters.set((0.3048 * value * 10000.0 + 0.5)/10000.0) exce

  • Python3实现转换Image图片格式

    前言 首先图片格式转换的方法有很多,但是转二进制字节流的,我搜了一下午终于在 stackoverflow上搜到了 说一下为什么要在线转这个图片格式 额,一名Python3 spider, 需求要爬去文章,并且把里面的图片,上传到本公司的七牛云上面, 意思就是,图片不需要下载到本地,爬取到图片url后,读取图片二进制数据,然后上传到自己公司七牛云上面,并且替换其格式(这一点很坑) 上传图片二进制数据到七牛云上面不难, 照着七牛云API文档基本就能行,有一点很坑,七牛云官方文档Python API

随机推荐