用於自動監控磁碟使用情況的 Shell 指令碼
我們寫一個 ,它在 crontab 中指定固定時間間隔監控磁碟使用情況,並在報告達到指定的閾值時透過電子郵件傳送報告。
首先,需要確保系統安裝了
mail
和
postfix
傳送郵件服務。下面是在
8中安裝的
:
[root@localhost ~]# yum -y install mailx postfix [root@localhost ~]# systemctl enable --now postfix
下面使用mail命令傳送郵件測試:
[root@localhost ~]# echo "This message will go into the body of the mail." | mail -s "Testing from the server." root@localhost
本文不講解如何配置smtp服務。
以下是測試磁碟使用情況並將報告傳送到指定郵箱的指令碼。指令碼的解釋在程式碼片段之後給出。
[root@localhost ~]# vim disk-monitor.sh #!/bin/bash MAILID="admin@linuxprobe.com" VALUE=80 SERVERNAME=$(hostname) MAIL=/bin/mail for line in $(df -hP | egrep '^/dev/' | awk '{ print $1 "_:_" $5 }') do FILESYSTEM=$(echo "$line" | awk -F"_:_" '{ print $1 }') DISK_USAGE=$(echo "$line" | awk -F"_:_" '{ print $2 }' | cut -d'%' -f1 ) if [ $DISK_USAGE -ge $VALUE ]; then EMAIL="$SERVERNAME - $(date): $FILESYSTEM Exceeded the threshold VALUE\n" EMAIL="$EMAIL\n Usage Details\n Current Usage:($DISK_USAGE%) Threshold value: ($VALUE%)" echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Needs Attention!" "$MAILID" elif [ $DISK_USAGE -lt $VALUE ]; then EMAIL="$EMAIL\n$FILESYSTEM ($DISK_USAGE%) is lessthan the threshold ($VALUE%)" EMAIL="$EMAIL\n" echo -e "$EMAIL" | $MAIL -s ""$SERVERNAME" Disk Usage Alert: Threshold Not Reached" "$MAILID" fi done
上述指令碼使用
df -hP
命令獲取記憶體資訊。
環境變數
MAILID
儲存必須在其中傳送報告的郵箱地址。
VALUE
儲存要設定的閾值。
SERVERNAME
儲存伺服器的主機名,用於電子郵件通知中的伺服器標識。
使用 for 迴圈,它將遍歷所有具有“/dev”掛載點的檔案系統。然後它將檔案系統名稱和磁碟使用百分比儲存到兩個變數
FILESYSTEM
和
DISK_USAGE
。
使用上述變數,磁碟使用量等於閾值
VALUE
變數。根據結果,將向指定的郵箱傳送一封電子郵件。
下面需要修改一下
disk-monitor.sh
指令碼的許可權,為它新增可執行許可權:
[root@localhost ~]# chmod +x disk-monitor.sh
使用下面方式執行指令碼:
[root@localhost ~]# ./disk-monitor.sh
手動執行指令碼沒有任何意義,因為我們希望自動執行該過程。自動執行該過程的最佳方法是將指令碼新增到
crontab
配置檔案中。
使用下面方式開啟crontab:
[root@localhost ~]# crontab -e
將下面內容新增到配置檔案中: <1pre<1 style="box-sizing: border-box;">*/5 * * * * sh /home/ec2-user/disk-monitor.sh
在文章中我們寫了一個 shell 指令碼,它在 crontab 中指定固定時間間隔監控磁碟使用情況,並在報告達到指定的閾值時透過電子郵件傳送報告。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69901823/viewspace-2838974/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 監控系統使用情況shell指令碼指令碼
- 用 Linux Shell 指令碼來監控磁碟使用情況併傳送郵件Linux指令碼
- 監控某個目錄使用情況的shell指令碼指令碼
- 【shell】磁碟監控指令碼指令碼
- 巧用shell指令碼統計磁碟使用情況指令碼
- PowerShell 指令碼來監控 CPU、記憶體和磁碟使用情況:指令碼記憶體
- 更改後的監控某個目錄的使用情況的shell指令碼指令碼
- 監控磁碟使用率的shell指令碼指令碼
- 用 Bash 指令碼監控 Linux 上的記憶體使用情況指令碼Linux記憶體
- 監視磁碟使用情況
- 監控index 的使用情況Index
- 監控Oracle索引的使用情況Oracle索引
- Oracle Undo使用情況監控Oracle
- shell指令碼:自動記憶體監控及日誌備份指令碼記憶體
- 監控java程式啟動時的CPU使用情況Java
- 常用的主機監控shell指令碼指令碼
- oracle會話監控shell指令碼Oracle會話指令碼
- Shell 系統資訊監控指令碼指令碼
- shell指令碼監控啟動停止weblogic服務指令碼Web
- 我常用的主機監控Shell指令碼指令碼
- 如何用bash shell 指令碼監控 Linux記憶體、磁碟和 CPU?指令碼Linux記憶體
- 透過shell指令碼監控oracle session指令碼OracleSession
- 通過shell指令碼監控oracle session指令碼OracleSession
- Oracle資料庫監控Index的使用情況Oracle資料庫Index
- 每5秒監控5000埠的shell指令碼指令碼
- 監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- shell指令碼:監控MySQL服務是否正常指令碼MySql
- Shell指令碼監控MySQL主從狀態指令碼MySql
- 利用shell指令碼監控網站狀態指令碼網站
- AIX系統資源監控SHELL指令碼AI指令碼
- 分享實用監控指令碼:使用Shell檢查程式是否存在指令碼
- oracle pga使用情況常用指令碼:Oracle指令碼
- [轉]監控Oracle資料庫的常用shell指令碼Oracle資料庫指令碼
- 監控Oracle資料庫的常用shell指令碼(轉)Oracle資料庫指令碼
- 利用Bash指令碼監控Linux伺服器的記憶體使用情況的相關資料指令碼Linux伺服器記憶體
- 檢視空間使用情況的指令碼指令碼
- 自動重建失效index的shell指令碼Index指令碼
- 通過shell指令碼檢視資料庫表空間使用情況指令碼資料庫