從實列中學習linux shell5: 利用shell 腳本 檢測硬盤空間容量,當使用量達到80%的時候 發送郵件

下面是用于檢測硬盤空間并在使用量達到80%時發送郵件的Shell腳本

第一步 編寫腳本

#!/bin/bash# 郵件配置
recipient="zhaoqingyou@99qhzt.com"
subject="磁盤空間警報"
mail_cmd="/usr/bin/mail"  # 根據實際郵件命令路徑修改# 檢查是否安裝郵件工具
if [ ! -f "$mail_cmd" ]; thenecho "錯誤:郵件發送工具未安裝,請先執行以下命令安裝:"echo "Debian/Ubuntu: sudo apt-get install mailutils"echo "CentOS/RHEL: sudo yum install mailx"exit 1
fi# 獲取所有磁盤分區信息
df -h | while read -r line; do# 跳過標題行和臨時文件系統if [[ $line == Filesystem* ]] || [[ $line == *tmpfs* ]]; thencontinuefi# 提取使用百分比(去掉%符號)usage=$(echo $line | awk '{print $5}' | tr -d '%')mount_point=$(echo $line | awk '{print $6}')# 判斷使用率是否超過80%if [ "$usage" -ge 80 ]; then# 獲取完整磁盤信息disk_info=$(df -h $mount_point)# 構造郵件內容message="警告:磁盤空間使用超過閾值!詳細信息:$disk_info請及時清理磁盤空間!服務器:$(hostname)檢測時間:$(date +"%Y-%m-%d %H:%M:%S")"# 發送郵件echo "$message" | $mail_cmd -s "$subject" $recipientecho "[$(date +'%Y-%m-%d %H:%M:%S')] 已發送警報郵件:$mount_point 使用率 ${usage}%"fi
done

第二步 使用方法

  1. 保存腳本為 disk_monitor.sh
  2. 賦予執行權限:
    chmod +x disk_monitor.sh
    
  3. 配置郵件系統(以Ubuntu為例):
    sudo apt-get install mailutils
    sudo dpkg-reconfigure postfix  # 選擇Internet Site,其他保持默認
    
  4. 測試腳本:
    ./disk_monitor.sh
    

設置定時任務(每天檢查):

crontab -e

添加以下內容(每天8點檢查):

0 8 * * * /path/to/disk_monitor.sh

關鍵功能說明:

  1. df -h:獲取人類可讀的磁盤使用信息
  2. awk '{print $5}':提取使用百分比列
  3. tr -d '%':移除百分號用于數值比較
  4. mail 命令:發送郵件的核心工具
  5. 自動過濾tmpfs等臨時文件系統
  6. 包含詳細磁盤信息和服務器標識

第三步 增強功能建議

  1. 多閾值分級報警:

    if [ "$usage" -ge 90 ]; thensubject="緊急!磁盤空間警報"
    elif [ "$usage" -ge 80 ]; thensubject="警告!磁盤空間警報"
    fi
    
  2. 添加日志記錄:

    log_file="/var/log/disk_monitor.log"
    echo "[$(date +'%Y-%m-%d %H:%M:%S')] $mount_point 使用率 ${usage}%" >> $log_file
    
  3. 排除特定掛載點(如NFS):

    if [[ $mount_point == /nfs* ]]; thencontinue
    fi
    

最后 注意事項

  1. 確保mail命令路徑正確(使用which mail查看)
  2. 測試時可將閾值臨時改為50%方便驗證
  3. 生產環境建議使用企業級監控系統(如Zabbix、Prometheus)運維人員和公司資金到位的情況下

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/79008.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/79008.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/79008.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Ethan獨立開發產品日報 | 2025-04-30

1. Daytona 安全且靈活的基礎設施,用于運行你的人工智能生成代碼。 Daytona Cloud重新定義了AI代理的基礎設施,具備低于90毫秒的啟動時間、原生性能和有狀態執行能力,這些是傳統云服務無法比擬的。您可以以前所未有的速度和靈活性來創建、管…

Unity SpriteMask(精靈遮罩)

🏆 個人愚見,沒事寫寫筆記 🏆《博客內容》:Unity3D開發內容 🏆🎉歡迎 👍點贊?評論?收藏 🔎SpriteMask:精靈遮罩 💡作用就是對精靈圖片產生遮罩&#xff0c…

OpenHarmony全局資源調度管控子系統之內存管理部件

OpenHarmony之內存管理部件 內存管理部件 簡介目錄框架 進程回收優先級列表 補充 回收策略/查殺策略 使用說明參數配置說明 availbufferSizeZswapdParamkillConfignandlife 相關倉 簡介 內存管理部件位于全局資源調度管控子系統中,基于應用的生命周期狀態&#…

姜老師的MBTI課程筆記小結(1)ENFJ人格

課程文稿: 好,今天我們的重點其實并不在ENTJ,而是在于如果一個人其他都很像,只是在思考和感受這兩端選擇的時候,他缺了思考而更尊重感受,它會是什么樣的一個人格特質呢?這就是ENFG在16人格的學派…

Node.js 應用場景

Node.js 應用場景 引言 Node.js 是一個基于 Chrome V8 JavaScript 引擎的開源、跨平臺 JavaScript 運行環境。它主要用于服務器端開發,通過非阻塞 I/O 模型實現了高并發處理能力。本文將詳細介紹 Node.js 的應用場景,幫助你了解其在實際項目中的應用。…

Qt/C++面試【速通筆記六】—Qt 中的線程同步

在多線程編程中,多個線程同時訪問共享資源時,可能會出現數據不一致或者錯誤的情況。這時,我們需要線程同步機制來保證程序的正確性。Qt 提供了多種線程同步方式,每種方式適用于不同的場景。 1. 互斥鎖(QMutex&#xff…

JDK-17 保姆級安裝教程(附安裝包)

文章目錄 一、下載二、安裝三、驗證是否安裝成功1、看 java 和 javac 是否可用2、看 java 和 javac 的版本號是否無問題 一、下載 JDK-17_windows-x64_bin.exe 二、安裝 三、驗證是否安裝成功 java:執行工具 javac:編譯工具 1、看 java 和 javac 是否…

【LeetCode Hot100】回溯篇

前言 本文用于整理LeetCode Hot100中題目解答,因題目比較簡單且更多是為了面試快速寫出正確思路,只做簡單題意解讀和一句話題解方便記憶。但代碼會全部給出,方便大家整理代碼思路。 46. 全排列 一句話題意 給定一個無重復數字的序列&#xf…

pytest-前后置及fixture運用

1.pytest中的xunit風格前后置處理 pytest中用例的前后置可以直接使用類似于unittest中的前后置處理,但是pytest中的前后置處理方式更 加豐富,分為模塊級、類級、方法級、函數級等不同等級的前后置處理,具體見下面的代碼: test_…

使用scipy求解優化問題

一、求解二次規劃問題 min(X.T * P * X C.T * X) s.t. Xi > 0 ∑Xi 1 1.定義目標函數 def objective(x):return 0.5 * np.dot(x, np.dot(P, x)) np.dot(c, x)2. 定義等式約束 def equality_constraint(x):return np.sum(x) - 1 3.定義邊界約束:x # …

C++初階-STL簡介

目錄 1.什么是STL 2.STL的版本 3.STL的六大組件 4.STL的重要性 4.1在筆試中 4.2在面試中 4.3.在公司中 5.如何學習STL 6.總結和之后的規劃 1.什么是STL STL(standard template library-標準模板庫);是C標準庫的重要組成部分&#xf…

kivy android打包buildozer.spec GUI配置

這個適合剛剛學習kivyd的道友使用,后面看情況更新 代碼 import tkinter as tk from tkinter import ttk, filedialog, messagebox, simpledialog import configparser import os import json # 新增導入class BuildozerConfigTool:def __init__(self, master):se…

MOOS-ivp使用(一)——水下機器人系統的入門與使用

MOOS-ivp使用(一)——水下機器人系統的入門與使用 MOOS-ivp(Marine Operational Oceanographic System for Intelligent Vehicle Planning)是專為水下機器人(如AUV)設計的開源框架。類似于ROS,…

電子病歷高質量語料庫構建方法與架構項目(智能質控體系建設篇)

引言 隨著人工智能技術的迅猛發展,醫療信息化建設正經歷著前所未有的變革。電子病歷作為醫療機構的核心數據資產,其質量直接關系到臨床決策的準確性和醫療安全。傳統的病歷質控工作主要依賴人工審核,存在效率低下、主觀性強、覆蓋面有限等問題。近年來,基于人工智能技術的…

react學習筆記4——React UI組件庫與redux

流行的開源React UI組件庫 material-ui(國外) 官網: http://www.material-ui.com/#/github: GitHub - mui/material-ui: Material UI: Comprehensive React component library that implements Googles Material Design. Free forever. ant-design(國內螞蟻金服) 官網: Ant…

GPU集群搭建

1. 硬件規劃與采購 GPU 服務器:挑選契合需求的 GPU 服務器,像 NVIDIA DGX 系列就不錯,它集成了多個高性能 GPU。網絡設備:高速網絡設備不可或缺,例如萬兆以太網交換機或者 InfiniBand 交換機,以此保證節點…

ZYNQ 純PL端邏輯資源程序固化流程

ZYNQ 純PL端邏輯資源程序固化 ZYNQ的程序固化流程比傳統的FPGA固化流程復雜很多,Vivado生成的bit文件無法直接固化在ZYNQ芯片中。因為ZYNQ 非易失性存儲器的引腳(如 SD 卡、QSPI Flash)是 ZYNQ PS 部分的專用引腳。這些非易失性存儲器由 PS …

[計算機科學#6]:從鎖存器到內存,計算機存儲的構建與原理

【核知坊】:釋放青春想象,碼動全新視野。 我們希望使用精簡的信息傳達知識的骨架,啟發創造者開啟創造之路!!! 內容摘要:在上一篇文章中,我們深入了解了計算機如…

如何刪除Google Chrome中的所有歷史記錄【一鍵清除】

谷歌瀏覽器記錄了用戶訪問過的網站。這方便了查找,但有時也需要清理。刪除所有歷史記錄很簡單,只要按照以下步驟操作。 1. 打開谷歌瀏覽器 首先要啟動谷歌瀏覽器。點擊右上角的三個點,進入主菜單。 2. 進入歷史記錄界面 在菜單中找到“歷史…