本文實例為大家分享了python3磁盤空間監控的具體代碼,供大家參考,具體內容如下
軟硬件環境
python3
apscheduler
前言
在做頻繁操作磁盤的python項目時,經常會碰到磁盤空間不足的情況,這個時候,工程應該要有自己的處理模塊,當磁盤利用率到達某個點時,發出警告并停止程序的運行。本文就利用Python3中的apscheduler模塊來處理這樣的問題。
代碼實踐
import osimport sysimport signalimport loggingfrom apscheduler.schedulers.background import BackgroundSchedulerfrom 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)
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林站長站。
新聞熱點
疑難解答