CentOS 实用脚本示例
介绍
在CentOS中,Shell脚本是一种强大的工具,可以帮助你自动化重复性任务、管理系统配置以及执行复杂的操作。无论你是系统管理员还是开发人员,掌握Shell脚本编写技能都能显著提高工作效率。本文将介绍一些实用的Shell脚本示例,帮助你快速上手。
1. 创建备份脚本
备份是系统管理中不可或缺的一部分。以下是一个简单的备份脚本示例,它将指定目录的内容备份到另一个位置。
bash
#!/bin/bash
# 定义源目录和目标目录
SOURCE_DIR="/var/www/html"
BACKUP_DIR="/backup"
# 创建备份目录
mkdir -p $BACKUP_DIR
# 创建备份文件
tar -czf $BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).tar.gz $SOURCE_DIR
echo "备份完成,文件保存在 $BACKUP_DIR"
解释
SOURCE_DIR
是你想要备份的目录。BACKUP_DIR
是备份文件保存的目录。tar -czf
命令用于将目录压缩成一个.tar.gz
文件。$(date +%Y%m%d_%H%M%S)
用于生成当前日期和时间,确保每次备份的文件名唯一。
运行脚本
将上述代码保存为 backup.sh
,然后赋予执行权限并运行:
bash
chmod +x backup.sh
./backup.sh
2. 监控磁盘使用情况
磁盘空间不足可能会导致系统问题。以下脚本可以帮助你监控磁盘使用情况,并在超过阈值时发送警告。
bash
#!/bin/bash
# 定义磁盘使用率阈值
THRESHOLD=90
# 获取磁盘使用率
DISK_USAGE=$(df -h / | grep / | awk '{print $5}' | sed 's/%//g')
# 检查是否超过阈值
if [ $DISK_USAGE -gt $THRESHOLD ]; then
echo "警告:磁盘使用率超过 $THRESHOLD%!当前使用率为 $DISK_USAGE%"
else
echo "磁盘使用正常,当前使用率为 $DISK_USAGE%"
fi
解释
df -h /
命令用于显示根分区的磁盘使用情况。awk '{print $5}'
提取磁盘使用率的百分比。sed 's/%//g'
去掉百分号,以便进行比较。if
语句用于检查磁盘使用率是否超过阈值。
运行脚本
将上述代码保存为 disk_monitor.sh
,然后赋予执行权限并运行:
bash
chmod +x disk_monitor.sh
./disk_monitor.sh
3. 自动清理日志文件
日志文件可能会占用大量磁盘空间。以下脚本可以帮助你自动清理旧的日志文件。
bash
#!/bin/bash
# 定义日志目录和保留天数
LOG_DIR="/var/log"
DAYS_TO_KEEP=7
# 查找并删除超过保留天数的日志文件
find $LOG_DIR -type f -name "*.log" -mtime +$DAYS_TO_KEEP -exec rm -f {} \;
echo "日志清理完成,保留最近 $DAYS_TO_KEEP 天的日志文件"
解释
find $LOG_DIR -type f -name "*.log"
用于查找指定目录下的所有.log
文件。-mtime +$DAYS_TO_KEEP
用于查找修改时间超过指定天数的文件。-exec rm -f {} \;
用于删除找到的文件。
运行脚本
将上述代码保存为 log_cleanup.sh
,然后赋予执行权限并运行:
bash
chmod +x log_cleanup.sh
./log_cleanup.sh
4. 批量重命名文件
如果你需要批量重命名文件,可以使用以下脚本。
bash
#!/bin/bash
# 定义文件扩展名和新前缀
EXTENSION=".txt"
NEW_PREFIX="file_"
# 遍历当前目录下的所有文件
for file in *$EXTENSION; do
mv "$file" "${NEW_PREFIX}${file}"
done
echo "文件重命名完成"
解释
for file in *$EXTENSION
用于遍历当前目录下所有指定扩展名的文件。mv "$file" "${NEW_PREFIX}${file}"
用于将文件重命名为新前缀加原文件名。
运行脚本
将上述代码保存为 rename_files.sh
,然后赋予执行权限并运行:
bash
chmod +x rename_files.sh
./rename_files.sh
5. 自动重启服务
有时你可能需要定期重启某个服务以确保其正常运行。以下脚本可以帮助你实现这一目标。
bash
#!/bin/bash
# 定义服务名称
SERVICE_NAME="httpd"
# 重启服务
systemctl restart $SERVICE_NAME
echo "服务 $SERVICE_NAME 已重启"
解释
systemctl restart $SERVICE_NAME
用于重启指定的服务。
运行脚本
将上述代码保存为 restart_service.sh
,然后赋予执行权限并运行:
bash
chmod +x restart_service.sh
./restart_service.sh
总结
通过本文,你学习了如何在CentOS中编写实用的Shell脚本,包括备份、监控磁盘使用情况、清理日志文件、批量重命名文件以及自动重启服务。这些脚本可以帮助你自动化日常任务,提高工作效率。
附加资源
练习
- 修改备份脚本,使其能够备份多个目录。
- 编写一个脚本,监控系统内存使用情况并在超过阈值时发送警告。
- 创建一个脚本,定期清理指定目录下的临时文件。
提示
在编写和运行脚本时,务必在测试环境中进行,以避免对生产环境造成影响。