Linux学习笔记:运维中的定时任务与脚本自动化笔记日期


一、Linux运维核心技能概览

在运维工作中,自动化和定时任务是关键技能,通过脚本和定时执行机制可以大幅提高工作效率,减少重复性工作。本笔记重点学习以下内容:

定时任务管理:使用cron实现定时执行脚本或命令。

Shell脚本编写:基础语法、流程控制、实战案例。

脚本调试与优化:日志记录、错误处理、权限管理。

二、定时任务(Cron)管理

1. 什么是Cron?

Cron是Linux系统的定时任务调度工具,允许用户按指定的时间周期(如分钟、小时、天)自动执行命令或脚本。

2. 配置Cron任务

查看当前用户Cron任务crontab -l

编辑当前用户Cron任务crontab -e

系统级Cron配置/etc/crontab/etc/cron.d/ 目录(需root权限)

3. Cron表达式格式

示例:

每天凌晨2点执行脚本:0 2 * * * /path/to/script.sh

每小时的第10分钟执行:10 * * * * command

每周三凌晨3点备份数据库:0 3 * * 3 /path/to/backup.sh

4. 注意事项

环境变量问题:Cron默认环境变量较少,脚本中可能需要显式指定路径(如/bin/bash /path/to/script.sh)。

日志管理:默认Cron输出会发送到用户邮箱,可重定向到文件(如>> /var/log/cron.log 2>&1)。

任务调试:检查/var/log/crontab/var/log/syslog 查看任务执行记录。

5. 实战案例:定时备份网站数据

(1)编写备份脚本(/opt/backup_webdata.sh):

#!/bin/bash  

BACKUP_DIR="/data/backup"  
DATE=$(date +%Y%m%d%H%M)  
tar -czf "$BACKUP_DIR/website_$DATE.tar.gz" /var/www/html  

(2)配置Cron任务:0 3 * * * /bin/bash /opt/backup_webdata.sh
(3)确保脚本可执行权限:chmod +x /opt/backup_webdata.sh

三、Shell脚本编写与自动化

1. 脚本基础

脚本开头#!/bin/bash 指定解释器

变量:无需声明,赋值即可(如NAME="Linux运维";echo $NAME

常用命令:结合Linux命令(如ls、grep、awk、sed)实现自动化任务

2. 流程控制

条件语句

if [ condition ]; then  
  # 执行代码  
elif [ condition2 ]; then  
  # 其他分支  
else  
  # 默认处理  
fi  

示例:检查磁盘空间是否不足

if [ $(df -h / | awk '{print $5}' | tail -1) -gt 90 ]; then  
  echo "磁盘空间不足!"  
fi  

循环语句

for file in $(ls /path/to/directory); do  
  # 处理每个文件  
done  

# 或者数值循环  
for i in {1..10}; do  
  echo "迭代次数:$i"  
done  

函数:封装可复用代码

function log_info() {  
  echo "$(date +%F\ %T) $1" >> /var/log/script.log  
}  

log_info "脚本执行成功"  

3. 实战案例:服务器资源监控脚本

(1)脚本内容(monitor_resources.sh):

#!/bin/bash  

MEM_USAGE=$(free -m | awk 'NR==2{print $3/$2*100.0}')  
CPU_LOAD=$(vmstat 1 2 | tail -1 | awk '{print $15}')  

if [ $(echo "$MEM_USAGE > 80" | bc) -ne 0 ]; then  
  echo "内存使用率过高:${MEM_USAGE}%" | mail -s "内存警告" admin@example.com  
fi  

if [ $(echo "$CPU_LOAD > 5" | bc) -ne 0 ]; then  
  echo "CPU负载过高:${CPU_LOAD}" >> /var/log/cpu_alert.log  
fi  

(2)配置Cron每小时监控:0 * * * * /bin/bash /opt/monitor_resources.sh

4. 脚本调试技巧

逐行执行:bash -x script.sh 显示每条命令的执行过程。

日志记录:使用echologger命令输出关键信息到日志文件。

错误捕获:set -e 使脚本在遇到错误时立即退出,避免后续错误。

四、运维脚本优化与安全管理

1. 最佳实践

权限控制:脚本仅赋予必要权限(如chmod 755 script.sh),敏感操作使用sudo

日志与通知:关键步骤记录日志,异常时通过邮件或监控工具告警。

异常处理:使用try/catch结构(如trap命令)捕获脚本错误。

模块化设计:将复杂脚本拆分为多个函数或子脚本,提升可维护性。

2. 常见运维脚本应用场景

系统巡检(CPU、内存、磁盘、网络状态)。

日志分析(异常日志提取、关键词统计)。

服务一键部署/启停脚本。

数据备份与恢复流程自动化。


发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注