在管理服務(wù)器時候?qū)懥艘粋€ shell腳本,在服務(wù)上實(shí)現(xiàn)每天凌晨3點(diǎn)查系統(tǒng)的指定文件夾下的容量大小,如果超過10G就要刪除3天前的內(nèi)容,還要時刻查詢內(nèi)存和cpu利用率,如果超過80%就要提示用戶出現(xiàn)過載
#!/bin/bash
# 指定要檢查的文件夾路徑
folder_path="/path/to/folder"
# 獲取當(dāng)前日期前三天的日期
three_days_ago=$(date -d "3 days ago" +%Y%m%d)
# 獲取當(dāng)前日期時間
datetime=$(date +%Y%m%d_%H%M%S)
# 檢查文件夾容量,如果超過10G就刪除3天前的內(nèi)容
folder_size=$(du -s $folder_path | awk '{print $1}')
if [ $folder_size -gt 10485760 ]; then
echo "$datetime: Folder size exceeds 10G, deleting files before $three_days_ago"
find $folder_path -type f -name "*" -mtime +3 -delete
fi
# 檢查內(nèi)存和CPU利用率,如果超過80%就提示用戶出現(xiàn)過載
mem_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
cpu_usage=$(top -bn1 | awk '/Cpu/{printf("%.2f"), $2}')
if (( $(echo "$mem_usage > 80" | bc -l) )) || (( $(echo "$cpu_usage > 80" | bc -l) )); then
echo "$datetime: System is overloaded, please take action"
fi
將以上代碼保存為一個.sh文件,然后通過crontab在每天凌晨3點(diǎn)運(yùn)行即可:
crontab -e
0 3 * * * /path/to/script.sh
以下是 system_check.sh
腳本中每一行的詳細(xì)解釋:
#!/bin/bash
這是 Bash 腳本的第一行,用于指定腳本使用的解釋器。在這里,#!/bin/bash
表示使用 Bash 解釋器來執(zhí)行該腳本。
# 指定要檢查的文件夾路徑
folder_path="/path/to/folder"
這一行定義了一個變量 folder_path
,用于指定要檢查的文件夾路徑。在這里,變量的值為 /path/to/folder
,可以根據(jù)實(shí)際情況修改。
# 獲取當(dāng)前日期前三天的日期
three_days_ago=$(date -d "3 days ago" +%Y%m%d)
這一行使用 date
命令獲取當(dāng)前日期前三天的日期,并將其保存到變量 three_days_ago
中。+%Y%m%d
表示設(shè)置日期的格式為年月日,例如 20220101
。
# 獲取當(dāng)前日期時間
datetime=$(date +%Y%m%d_%H%M%S)
這一行使用 date
命令獲取當(dāng)前日期時間,并將其保存到變量 datetime
中。+%Y%m%d_%H%M%S
表示設(shè)置日期時間的格式為年月日_時分秒,例如 20220101_120000
。
# 檢查文件夾容量,如果超過10G就刪除3天前的內(nèi)容
folder_size=$(du -s $folder_path | awk '{print $1}')
if [ $folder_size -gt 10485760 ]; then
echo "$datetime: Folder size exceeds 10G, deleting files before $three_days_ago"
find $folder_path -type f -name "*" -mtime +3 -delete
fi
這一段代碼用于檢查文件夾容量,如果超過10G就刪除3天前的內(nèi)容。具體來說:
-
du -s $folder_path
命令用于計(jì)算指定文件夾的容量大小,并將結(jié)果保存到變量folder_size
中。-s
表示只顯示總計(jì)大小,不顯示每個子目錄的大小。 -
if [ $folder_size -gt 10485760 ]; then
表示如果文件夾的容量大小超過10G(即10485760
KB),則執(zhí)行下面的命令。 -
echo "$datetime: Folder size exceeds 10G, deleting files before $three_days_ago"
表示輸出一條提示信息,指示文件夾容量超過10G,并將日期時間和三天前的日期插入到提示信息中。 -
find $folder_path -type f -name "*" -mtime +3 -delete
命令用于查找并刪除文件夾中3天前的文件。-type f
表示只查找文件,-name "*"
表示查找所有文件,-mtime +3
表示查找修改時間在3天前的文件,-delete
表示刪除查找到的文件。
# 檢查內(nèi)存和CPU利用率,如果超過80%就提示用戶出現(xiàn)過載
mem_usage=$(free | awk '/Mem/{printf("%.2f"), $3/$2*100}')
cpu_usage=$(top -bn1 | awk '/Cpu/{printf("%.2f"), $2}')
if (( $(echo "$mem_usage > 80" | bc -l) )) || (( $(echo "$cpu_usage > 80" | bc -l) )); then
echo "$datetime: System is overloaded, please take action"
fi
這一段代碼用于檢查內(nèi)存和 CPU 利用率,如果超過80%就提示用戶出現(xiàn)過載。- free
命令用于查看系統(tǒng)內(nèi)存使用情況。| awk '/Mem/{printf("%.2f"), $3/$2*100}'
表示將 free
命令的輸出通過管道傳遞給 awk
命令,查找含有 Mem
的行,并計(jì)算內(nèi)存使用率。$3/$2*100
表示計(jì)算已用內(nèi)存占總內(nèi)存的百分比,并輸出到變量 mem_usage
中。文章來源:http://www.zghlxwxcb.cn/news/detail-492525.html
-
top -bn1
命令用于查看當(dāng)前 CPU 使用情況。| awk '/Cpu/{printf("%.2f"), $2}'
表示將top
命令的輸出通過管道傳遞給awk
命令,查找含有Cpu
的行,并輸出第二個字段(即 CPU 利用率)到變量cpu_usage
中。 -
if (( $(echo "$mem_usage > 80" | bc -l) )) || (( $(echo "$cpu_usage > 80" | bc -l) )); then
表示如果內(nèi)存使用率或 CPU 利用率超過80%,則執(zhí)行下面的命令。 -
echo "$datetime: System is overloaded, please take action"
表示輸出一條提示信息,指示系統(tǒng)出現(xiàn)過載,并將日期時間插入到提示信息中。
總的來說,該腳本用于檢查系統(tǒng)狀態(tài),包括文件夾容量和系統(tǒng)資源利用率等方面,如果出現(xiàn)異常情況,則會提示用戶采取相應(yīng)的行動。文章來源地址http://www.zghlxwxcb.cn/news/detail-492525.html
到了這里,關(guān)于【Linux運(yùn)維】shell腳本檢查服務(wù)器內(nèi)存和CPU利用率的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!