CentOS中while循环案例:实用脚本编程技巧
在CentOS系统中,while循环是Shell脚本编程中不可或缺的工具。本文将通过多个实用案例,展示while循环在系统管理和自动化任务中的应用,帮助您提升脚本编程技能。
1. 监控系统负载
以下脚本每5秒检查一次系统负载,当负载超过预设阈值时发出警告:
#!/bin/bash
threshold=2.0
while true; do
load=$(cat /proc/loadavg | awk '{print $1}')
if (( $(echo "$load > $threshold" | bc -l) )); then
echo "警告:系统负载($load)超过阈值($threshold)"
fi
sleep 5
done
2. 批量用户管理
这个脚本从文件中读取用户名列表,并创建相应的用户账户:
#!/bin/bash
while read username; do
useradd $username
echo "已创建用户: $username"
done
3. 文件备份
自动备份指定目录下的文件,并添加时间戳:
#!/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 # 每小时备份一次
done
4. 网络连接测试
定期检查网络连接状态,如果连接失败则尝试重新连接:
#!/bin/bash
target="www.example.com"
while true; do
if ping -c 1 $target &> /dev/null; then
echo "网络连接正常"
else
echo "网络连接失败,尝试重新连接..."
# 在此添加重新连接的命令
fi
sleep 60
done
5. 日志分析
分析Apache访问日志,统计每个IP地址的访问次数:
#!/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循环在CentOS系统管理和自动化任务中的广泛应用。通过实践这些例子,您可以深入理解while循环的工作原理,并在日常工作中灵活运用。记住,良好的错误处理和适当的退出条件对于编写可靠的脚本至关重要。随着经验的积累,您将能够开发出更复杂、更高效的脚本来满足各种系统管理需求。