python3磁盘空间监控

/

软硬件环境

  • python3
  • apscheduler

前言

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

代码实践

  1. import os
  2. import sys
  3. import signal
  4. import logging
  5. from apscheduler.schedulers.background import BackgroundScheduler
  6. from apscheduler.triggers.interval import IntervalTrigger
  7. # 开启磁盘空间检测
  8. sched = BackgroundScheduler()
  9. # 间隔5分钟开启一个检查
  10. intervalTrigger = IntervalTrigger(minutes=5)
  11. # 给检查任务设个id,方便任务的取消
  12. sched.add_job(spaceMonitorJob, trigger=intervalTrigger, id='id_space_monitor')
  13. sched.start()
  14. # 禁止apscheduler相关信息屏幕输出
  15. logging.getLogger('apscheduler.executors.default').propagate = False

方法spaceMonitorJob代码如下

  1. def spaceMonitorJob():
  2. '''
  3. 当磁盘(切片存储的目录)利用率超过90%,程序退出
  4. :return:
  5. '''
  6. try:
  7. st = os.statvfs('/')
  8. total = st.f_blocks * st.f_frsize
  9. used = (st.f_blocks - st.f_bfree) * st.f_frsize
  10. except FileNotFoundError:
  11. print('check webroot space error.')
  12. logger.error('check webroot space error.')
  13. # 移除任务,病关闭sched任务
  14. sched.remove_job(job_id='id_space_monitor')
  15. sched.shutdown(wait=False)
  16. sys.exit(-3)
  17. if used / total > 0.9:
  18. print('No enough space.')
  19. logger.debug('No enough space.')
  20. sched.remove_job(job_id='id_space_monitor')
  21. sched.shutdown(wait=False)
  22. # 杀掉进程
  23. os.killpg(os.getpgid(os.getpid()), signal.SIGKILL)
  24. # 退出
  25. exit(-3)

转载请注明作者和出处,并添加本页链接。
原文链接:http://xugaoxiang.com/post/24

给我留言