当前位置: 首页 > article >正文

【网络云计算】2024第52周-每日【2024/12/25】小测-理论实操-自己构造场景,写5个系统管理的脚本-解析

文章目录

      • 场景1:自动备份数据库
      • 场景2:监控服务器CPU和内存使用情况
      • 场景3:自动更新系统软件包
      • 场景4:自动清理临时文件
      • 场景5:自动重启崩溃的服务

【网络云计算】2024第52周-每日【2024/12/24】小测-理论&实操-自己构造场景,写5个系统管理的脚本

在网络云计算环境中,系统管理脚本对于自动化任务、监控和维护系统至关重要。以下是五个自己构造的系统管理脚本场景及其对应的脚本示例。这些脚本使用Bash编写,适用于Linux系统。

场景1:自动备份数据库

场景描述:每天凌晨2点自动备份MySQL数据库到指定目录,并保留最近7天的备份文件。

#!/bin/bash

# 设置变量
BACKUP_DIR="/backup/mysql"
DATE=$(date +%F)
DB_USER="root"
DB_PASSWORD="yourpassword"
DB_NAME="yourdatabase"

# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR

# 执行备份
mysqldump -u $DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/${DB_NAME}_$DATE.sql

# 删除超过7天的备份文件
find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -exec rm {} \;

# 将此脚本添加到crontab中以实现自动化
# 0 2 * * * /path/to/this/script.sh

场景2:监控服务器CPU和内存使用情况

场景描述:每隔5分钟检查一次服务器的CPU和内存使用情况,并将结果记录到日志文件中。

#!/bin/bash

# 设置变量
LOG_FILE="/var/log/system_monitor.log"
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")

# 获取CPU和内存使用情况
CPU_USAGE=$(top -bn1 | grep "Cpu(s)" | awk '{print $2 + $4 "%"}')
MEM_USAGE=$(free -m | awk '/^Mem:/{printf("%.2f%\n", $3*100/$2)}')

# 记录到日志文件
echo "$TIMESTAMP - CPU Usage: $CPU_USAGE, Memory Usage: $MEM_USAGE" >> $LOG_FILE

# 将此脚本添加到crontab中以实现自动化
# */5 * * * * /path/to/this/script.sh

场景3:自动更新系统软件包

场景描述:每周三凌晨3点自动更新系统的所有软件包,并重启必要的服务。

#!/bin/bash

# 更新软件包列表
apt-get update

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

# 如果有必要,可以添加重启服务的逻辑(例如,重启nginx)
# systemctl restart nginx

# 注意:在实际环境中,自动重启服务可能需要谨慎处理,以避免服务中断。
# 可以考虑在更新后手动验证服务状态,或编写更复杂的逻辑来决定何时重启。

# 将此脚本添加到crontab中以实现自动化
# 0 3 * * 3 /path/to/this/script.sh

场景4:自动清理临时文件

场景描述:每天凌晨1点自动清理/tmp/var/tmp目录中的临时文件。

#!/bin/bash

# 要清理的目录
DIRS=("/tmp" "/var/tmp")

# 遍历目录并删除其中的文件
for DIR in "${DIRS[@]}"; do
    rm -rf $DIR/*
    # 注意:rm -rf 是非常危险的命令,使用时需要格外小心。
    # 在生产环境中,可能需要更精细的控制来避免删除重要文件。
done

# 将此脚本添加到crontab中以实现自动化
# 0 1 * * * /path/to/this/script.sh

场景5:自动重启崩溃的服务

场景描述:每隔10分钟检查一次指定服务(如nginx)的状态,如果服务未运行,则自动重启它。

#!/bin/bash

# 设置变量
SERVICE_NAME="nginx"
CHECK_INTERVAL=600  # 10分钟,单位为秒
LOG_FILE="/var/log/service_restart.log"
TIMESTAMP=$(date +"%Y-%m-%d %H:%M:%S")

# 无限循环,每隔CHECK_INTERVAL秒检查一次服务状态
while true; do
    # 检查服务状态
    if ! systemctl is-active --quiet $SERVICE_NAME; then
        # 服务未运行,尝试重启
        echo "$TIMESTAMP - $SERVICE_NAME is not running. Attempting to restart." >> $LOG_FILE
        systemctl restart $SERVICE_NAME
        
        # 检查重启是否成功
        if systemctl is-active --quiet $SERVICE_NAME; then
            echo "$TIMESTAMP - $SERVICE_NAME restarted successfully." >> $LOG_FILE
        else
            echo "$TIMESTAMP - Failed to restart $SERVICE_NAME." >> $LOG_FILE
        fi
    fi
    
    # 等待CHECK_INTERVAL秒
    sleep $CHECK_INTERVAL
done

# 注意:这个脚本会无限循环运行,通常应该作为systemd服务或通过其他方式管理。
# 在实际部署时,需要确保脚本的安全性和资源管理(例如,避免CPU和内存占用过高)。
# 将此脚本作为systemd服务运行可能是一个更好的选择。

重要提示

  1. 在实际环境中使用这些脚本之前,请确保对它们进行了充分的测试,并理解每个命令的潜在影响。
  2. 对于涉及系统安全和稳定性的操作(如自动重启服务),请格外小心,并考虑在实施之前与团队或系统管理员进行讨论。
  3. 这些脚本可能需要根据具体的系统配置和需求进行调整。

http://www.kler.cn/a/451888.html

相关文章:

  • Redis学习(五)优惠券秒杀2——分布式锁
  • 黑盒测试/白盒测试知识总结
  • 面试场景题系列:设计一致性哈希系统
  • 【Linux】ChatGLM-4-9B模型之All Tools
  • Vue零基础必学教程(16) 计算属性
  • UE5 渲染管线 学习笔记
  • Python——day09
  • C++之红黑树模拟实现
  • windows10/windows11运行ps1脚本报错的解决方法,签名错误解决方法
  • docker代理配置
  • 【iOS】FFmpeg更改文件名
  • 17_HTML5 Web 存储 --[HTML5 API 学习之旅]
  • CUDA11.4版本的Pytorch下载
  • Visual Studio Code历史版本下载
  • 2.1.2 select poll epoll reactor
  • 如何在openwrt中使用docker(命令行版)
  • leetcode22:括号问题
  • 《探寻神经网络RNN:从原理到应用的奇幻之旅》
  • 基于Java的在线教育系统
  • 《Swift 字面量》
  • 【web网页制作】html+css旅游家乡河南开封主题网页制作(4页面)【附源码】
  • DENIAL-OF-SERVICE POISONING ATTACKS ON LARGE LANGUAGE MODELS
  • 5-Gin 静态文件服务 --[Gin 框架入门精讲与实战案例]
  • KAFKA 权威指南笔记(一)究竟应该配置多少个BROKER?
  • 【每日学点鸿蒙知识】上架流程、h5返回收拾拦截、两个枚举类型之间转换、hvigorw命令、绘制本地图片
  • 代码随想录算法训练营第一天 | 704. 二分查找、 27. 移除元素、977.有序数组的平方