Linux脚本实现自动化运维任务实战案例:系统自动备份、日志轮转、系统更新、资源监控、自动化定时任务调度

🧑 博主简介:现任阿里巴巴嵌入式技术专家,15年工作经验,深耕嵌入式+人工智能领域,精通嵌入式领域开发、技术管理、简历招聘面试。CSDN优质创作者,全网11W+粉丝博主,提供产品测评、学习辅导、简历面试辅导、毕设辅导、项目开发、C/C++/Java/Python/Linux/AI等方面的服务,同时还运营着十几个不同主题的技术交流群,如有需要请站内私信或者联系VX(gylzbk),互相学习共同进步。

自动化运维任务是通过脚本来简化和自动化日常的系统管理工作,比如备份、日志轮转、系统更新、监控等。本文将通过实际案例展示如何用脚本实现自动化运维任务,包括系统备份、日志轮转、系统更新和资源监控。

前言

自动化运维任务是通过脚本来简化和自动化日常的系统管理工作,比如备份、日志轮转、系统更新、监控等。本文将通过实际案例展示如何用脚本实现自动化运维任务,包括系统备份、日志轮转、系统更新和资源监控。

案例1:系统备份脚本

这个脚本将指定目录备份到一个压缩文件,并将备份文件保存在指定的备份目录中。

backup.sh

bash 复制代码
#!/bin/bash

# 定义变量
SOURCE_DIR="/path/to/source"
BACKUP_DIR="/path/to/backup"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
BACKUP_FILE="backup_$TIMESTAMP.tar.gz"

# 创建备份
tar -czf $BACKUP_DIR/$BACKUP_FILE $SOURCE_DIR

# 输出备份结果
if [ $? -eq 0 ]; then
  echo "Backup successful: $BACKUP_DIR/$BACKUP_FILE"
else
  echo "Backup failed"
  exit 1
fi

使用方法

  1. 将上述内容保存为 backup.sh

  2. 给脚本执行权限:

    sh 复制代码
    chmod +x backup.sh
  3. 运行脚本:

    sh 复制代码
    ./backup.sh

案例2:日志轮转脚本

这个脚本将指定的日志文件重命名为带有时间戳的文件,并将其压缩。

logrotate.sh

bash 复制代码
#!/bin/bash

# 定义变量
LOG_DIR="/path/to/logs"
LOG_FILE="application.log"
TIMESTAMP=$(date +"%Y%m%d%H%M%S")
ARCHIVE_FILE="$LOG_DIR/$LOG_FILE.$TIMESTAMP.gz"

# 旋转日志
if [ -f $LOG_DIR/$LOG_FILE ]; then
  mv $LOG_DIR/$LOG_FILE $LOG_DIR/$LOG_FILE.$TIMESTAMP
  gzip $LOG_DIR/$LOG_FILE.$TIMESTAMP
  echo "Log rotated and compressed: $ARCHIVE_FILE"
else
  echo "Log file not found: $LOG_DIR/$LOG_FILE"
  exit 1
fi

使用方法

  1. 将上述内容保存为 logrotate.sh

  2. 给脚本执行权限:

    sh 复制代码
    chmod +x logrotate.sh
  3. 运行脚本:

    sh 复制代码
    ./logrotate.sh

案例3:系统更新脚本

这个脚本将自动更新系统软件包,并重启系统。

update_system.sh

bash 复制代码
#!/bin/bash

# 更新包列表
sudo apt update

# 升级所有已安装的软件包
sudo apt upgrade -y

# 清理不再需要的包
sudo apt autoremove -y

# 重启系统(可选)
sudo reboot

使用方法

  1. 将上述内容保存为 update_system.sh

  2. 给脚本执行权限:

    sh 复制代码
    chmod +x update_system.sh
  3. 运行脚本:

    sh 复制代码
    ./update_system.sh

案例4:资源监控脚本

这个脚本将监控系统的CPU、内存和磁盘使用情况,并将结果写入日志文件。当资源使用过高时,通过邮件或消息通知管理员。

monitor_resources.sh

bash 复制代码
#!/bin/bash

# 定义变量
LOG_FILE="/path/to/monitor.log"
CPU_THRESHOLD=80
MEM_THRESHOLD=80
DISK_THRESHOLD=80

# 获取资源使用情况
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1}')
MEM_USAGE=$(free | grep Mem | awk '{print $3/$2 * 100.0}')
DISK_USAGE=$(df -h | grep '/dev/sda1' | awk '{print $5}' | sed 's/%//g')

# 记录日志
echo "$(date) - CPU: $CPU_USAGE%, MEM: $MEM_USAGE%, DISK: $DISK_USAGE%" >> $LOG_FILE

# 检查阈值并报警
if (( $(echo "$CPU_USAGE > $CPU_THRESHOLD" |bc -l) )); then
  echo "CPU usage is above threshold: $CPU_USAGE%" | mail -s "CPU Alert" admin@example.com
fi

if (( $(echo "$MEM_USAGE > $MEM_THRESHOLD" |bc -l) )); then
  echo "Memory usage is above threshold: $MEM_USAGE%" | mail -s "Memory Alert" admin@example.com
fi

if (( $(echo "$DISK_USAGE > $DISK_THRESHOLD" |bc -l) )); then
  echo "Disk usage is above threshold: $DISK_USAGE%" | mail -s "Disk Alert" admin@example.com
fi

使用方法

  1. 将上述内容保存为 monitor_resources.sh

  2. 给脚本执行权限:

    sh 复制代码
    chmod +x monitor_resources.sh
  3. 运行脚本:

    sh 复制代码
    ./monitor_resources.sh

案例5:自动化定时任务调度

为了让这些脚本定期自动执行,可以使用 cron 任务调度。

编辑 crontab 文件

sh 复制代码
crontab -e

添加定时任务

bash 复制代码
# 每天凌晨2点执行备份脚本
0 2 * * * /path/to/backup.sh

# 每天凌晨3点执行日志轮转脚本
0 3 * * * /path/to/logrotate.sh

# 每周日凌晨4点执行系统更新脚本
0 4 * * 0 /path/to/update_system.sh

# 每小时执行资源监控脚本
0 * * * * /path/to/monitor_resources.sh

结语

本文通过实际案例展示了如何用脚本实现自动化运维任务,包括系统备份、日志轮转、系统更新和资源监控。通过这些脚本和任务调度,可以大大简化和自动化日常的运维工作,提高效率和系统的稳定性。

相关推荐
mounter62521 小时前
MACsec 全景解析:从技术演进、核心架构到 DPU 硬件卸载与 K8s 大规模调度实战
linux·kubernetes·linux kernel·kernel·macsec
IT邦德1 天前
Dify1.6基于ubuntu系统的部署实战
linux·运维·ubuntu
蓝速科技1 天前
蓝速科技会议电子门牌规模化部署与运维成本实测
运维·科技
许彰午1 天前
# allbytaskid——一个接口扛六个DataStore
运维·服务器·php
吠品1 天前
Java byte数组与String互转:编码细节与踩坑记录
java·linux·服务器
牛奶咖啡131 天前
AI助力运维——AIGC运维应用实践—Deepseek的介绍与本地部署选型
运维·人工智能·deepseek·deepseek能做什么·deepseek本地部署配置·本地部署选型避坑原则·本地部署的典型方案
木白CPP1 天前
Linux 驱动UART子系统源码分析
linux·运维·服务器·驱动开发·嵌入式硬件·开源软件
-今昭-1 天前
HAProxy 负载均衡部署
运维·负载均衡
RisunJan1 天前
Linux命令-times(进程累计时间显示)
linux·运维·chrome
xiaoxiangsiyan1 天前
RHCE2026完整版全知识点清单
运维·网络·学习·自动化·rhce