Linux脚本实现自动化运维:系统自动备份、资源监控

1、系统自动备份

目的:将重要应用备份到别的机器上

脚本实例:

bash 复制代码
#!/bin/bash
# 定义变量
app_user=待备份应用的服务器用户名
app_passwd=待备份应用的服务器密码
app_ip=待备份应用的服务器IP
BASE_PATH='/data/inspur_bak'
TODAY_DATE=`date +\%Y\%m\%d`
CURRENT_PATH=${BASE_PATH}/${TODAY_DATE}
test -d ${CURRENT_PATH} || mkdir -p ${CURRENT_PATH}


#定义日志路径
log_path=${BASE_PATH}/log
log=${log_path}/bak_${TODAY_DATE}.log
if [ ! -d ${log_path} ]; then
  mkdir -p ${log_path}
  chmod -R 755 ${log_path}
  touch ${log}
  chmod 755 ${log}
  if [ $? -ne 0 ]; then
    echo "log create fail!"
    echo "log is not exit!!please check..."
    exit -1
  fi
fi

#日志函数
function Log()
{
  createTime=`date  +"%Y-%m-%d %H:%M:%S"`
  #log_file有可能不存在,先打印,不报错
  echo -e "[${createTime}] $*" |tee -a ${log} 2>/dev/null
}
Log ""
Log "-------------------------开始备份应用目录--------------------------------------"
Log ""

lftp -u ${app_user},${app_passwd} ftp://${app_ip}<<EOF
mirror /app/nwom/Inspur  ${CURRENT_PATH}/Inspur
mirror /app/nwom/tools-zookeeper-2181  ${CURRENT_PATH}/tools-zookeeper-2181
bye
EOF

if [ $? -ne 0 ]; then
  ERRCODE=-1
  ERR_LOG="10.238.83.47 应用备份失败"
  Log "${ERR_LOG}"
  continue
fi

Log ""
Log "-------------------------应用备份完成------------------------------------------"
Log ""

使用方法

将上述内容保存为 backup.sh

给脚本执行权限:

bash 复制代码
chmod +x backup.sh

运行脚本:

bash 复制代码
./backup.sh

添加定时任务

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

2、系统资源监控

这个脚本将监控系统的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

使用方法:

将上述内容保存为 monitor_resources.sh

给脚本执行权限:

bash 复制代码
chmod +x monitor_resources.sh

运行脚本:

bash 复制代码
./monitor_resources.sh

添加定时执行任务

bash 复制代码
# 每小时执行资源监控脚本
0 * * * * /path/to/monitor_resources.sh
相关推荐
happymagic39 分钟前
java spring boot做的jar包程序,如何实现自动运行启动
java·运维·服务器·spring boot·jar
星空你好42 分钟前
AI辅助运维:开源一个内网日志监控工具
运维
风曦Kisaki1 小时前
Kubernetes(K8s)笔记Day06: 持久化存储(emptyDir,hostPath,NFS),PV 和 PVC,StorageClass存储类
linux·运维·笔记·云原生·容器·kubernetes
_艾伦 耶格尔.1 小时前
基础I/O
linux
YFJ_mily2 小时前
【IEEE征稿】第二届智能制造、机器人与自动化国际学术会议(IMRA 2026)| 马鞍山12月举办,EI/Scopus稳定检索,3-5工作日录用
机器人·自动化·智能制造·工业自动化·ieee会议·rdlink研发家·安徽马鞍山会议
nbzy8883 小时前
电器铝锌压铸配件资料检索报错排查:倒排索引与结构化过滤的组合实现
自动化·内容生成·电器铝锌压铸配件
fb_123454 小时前
Linux磁盘分区从入门到实操:MBR_GPT全解析+分区工具实战指南
java·linux·gpt
深念Y5 小时前
随身WiFi设备记录
linux·嵌入式·无线·射频·随身wifi·zte
柒号华仔5 小时前
【LINUX】Linux从闹钟到高精度定时器的实现
linux
Crazy________6 小时前
k8s部署若依微服务架构流程,v3.6.6
运维·云原生·容器·kubernetes·状态模式