CentOS中while循環(huán)案例:實(shí)用腳本編程技巧
在CentOS系統(tǒng)中,while循環(huán)是Shell腳本編程中不可或缺的工具。本文將通過(guò)多個(gè)實(shí)用案例,展示while循環(huán)在系統(tǒng)管理和自動(dòng)化任務(wù)中的應(yīng)用,幫助您提升腳本編程技能。
1. 監(jiān)控系統(tǒng)負(fù)載
以下腳本每5秒檢查一次系統(tǒng)負(fù)載,當(dāng)負(fù)載超過(guò)預(yù)設(shè)閾值時(shí)發(fā)出警告:
#!/bin/bash
threshold=2.0
while true; do
load=$(cat /proc/loadavg | awk '{print $1}')
if (( $(echo "$load > $threshold" | bc -l) )); then
echo "警告:系統(tǒng)負(fù)載($load)超過(guò)閾值($threshold)"
fi
sleep 5
done
2. 批量用戶管理
這個(gè)腳本從文件中讀取用戶名列表,并創(chuàng)建相應(yīng)的用戶賬戶:
#!/bin/bash
while read username; do
useradd $username
echo "已創(chuàng)建用戶: $username"
done
3. 文件備份
自動(dòng)備份指定目錄下的文件,并添加時(shí)間戳:
#!/bin/bash
source_dir="/path/to/source"
backup_dir="/path/to/backup"
while true; do
timestamp=$(date +"%Y%m%d_%H%M%S")
tar -czf "$backup_dir/backup_$timestamp.tar.gz" "$source_dir"
echo "備份完成: backup_$timestamp.tar.gz"
sleep 3600 # 每小時(shí)備份一次
done
4. 網(wǎng)絡(luò)連接測(cè)試
定期檢查網(wǎng)絡(luò)連接狀態(tài),如果連接失敗則嘗試重新連接:
#!/bin/bash
target="www.example.com"
while true; do
if ping -c 1 $target &> /dev/null; then
echo "網(wǎng)絡(luò)連接正常"
else
echo "網(wǎng)絡(luò)連接失敗,嘗試重新連接..."
# 在此添加重新連接的命令
fi
sleep 60
done
5. 日志分析
分析Apache訪問(wèn)日志,統(tǒng)計(jì)每個(gè)IP地址的訪問(wèn)次數(shù):
#!/bin/bash
log_file="/var/log/httpd/access_log"
declare -A ip_count
while read line; do
ip=$(echo $line | awk '{print $1}')
((ip_count[$ip]++))
done
這些案例展示了while循環(huán)在CentOS系統(tǒng)管理和自動(dòng)化任務(wù)中的廣泛應(yīng)用。通過(guò)實(shí)踐這些例子,您可以深入理解while循環(huán)的工作原理,并在日常工作中靈活運(yùn)用。記住,良好的錯(cuò)誤處理和適當(dāng)?shù)耐顺鰲l件對(duì)于編寫可靠的腳本至關(guān)重要。隨著經(jīng)驗(yàn)的積累,您將能夠開發(fā)出更復(fù)雜、更高效的腳本來(lái)滿足各種系統(tǒng)管理需求。