一、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
显示每条命令的执行过程。
日志记录:使用echo
或logger
命令输出关键信息到日志文件。
错误捕获:set -e
使脚本在遇到错误时立即退出,避免后续错误。
四、运维脚本优化与安全管理
1. 最佳实践
权限控制:脚本仅赋予必要权限(如chmod 755 script.sh
),敏感操作使用sudo
。
日志与通知:关键步骤记录日志,异常时通过邮件或监控工具告警。
异常处理:使用try/catch
结构(如trap
命令)捕获脚本错误。
模块化设计:将复杂脚本拆分为多个函数或子脚本,提升可维护性。
2. 常见运维脚本应用场景
系统巡检(CPU、内存、磁盘、网络状态)。
日志分析(异常日志提取、关键词统计)。
服务一键部署/启停脚本。
数据备份与恢复流程自动化。