使用Shell脚本自动化日常运维任务可以大大提高工作效率,减少人为错误。以下是一些常见的运维任务及其自动化示例:
#!/bin/bash
# 定义备份目录和源目录
BACKUP_DIR="/backup"
SOURCE_DIR="/var/www/html"
# 创建备份目录(如果不存在)
mkdir -p "$BACKUP_DIR"
# 获取当前日期
DATE=$(date +%Y%m%d%H%M%S)
# 创建备份文件名
BACKUP_FILE="$BACKUP_DIR/backup_$DATE.tar.gz"
# 执行备份
tar -czvf "$BACKUP_FILE" "$SOURCE_DIR"
# 删除7天前的备份
find "$BACKUP_DIR" -type f -name "*.tar.gz" -mtime +7 -exec rm {} \;
#!/bin/bash
# 定义监控目录
MONITOR_DIR="/"
# 获取磁盘使用情况
DISK_USAGE=$(df -h "$MONITOR_DIR" | awk 'NR==2{print $5}')
# 检查磁盘使用率是否超过80%
if [ "$DISK_USAGE" -gt 80 ]; then
echo "磁盘空间不足:$DISK_USAGE%"
# 可以在这里添加发送警报的代码,例如发送邮件或短信
fi
#!/bin/bash
# 定义服务名称
SERVICE_NAME="nginx"
# 检查服务状态
if systemctl is-active --quiet "$SERVICE_NAME"; then
echo "$SERVICE_NAME 正在运行,准备重启..."
systemctl restart "$SERVICE_NAME"
echo "$SERVICE_NAME 已重启"
else
echo "$SERVICE_NAME 未运行,启动服务..."
systemctl start "$SERVICE_NAME"
echo "$SERVICE_NAME 已启动"
fi
#!/bin/bash
# 定义日志文件路径
LOG_FILE="/var/log/myapp.log"
# 使用logrotate进行日志轮转
logrotate -f /etc/logrotate.conf
# 检查日志文件大小
LOG_SIZE=$(stat -c%s "$LOG_FILE")
# 如果日志文件大于100MB,则压缩并创建新日志文件
if [ "$LOG_SIZE" -gt 100000000 ]; then
gzip "$LOG_FILE"
touch "$LOG_FILE"
fi
#!/bin/bash
# 更新包列表
sudo apt-get update
# 升级所有已安装的包
sudo apt-get upgrade -y
# 清理不再需要的包和缓存
sudo apt-get autoremove -y
sudo apt-get autoclean
backup.sh。chmod +x backup.sh命令赋予脚本执行权限。cron来定时执行这些脚本。编辑crontab文件:crontab -e
添加以下行来每天凌晨2点执行备份脚本:0 2 * * * /path/to/backup.sh
通过这些示例,你可以根据实际需求编写和调整Shell脚本来自动化日常运维任务。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。