Shell脚本100例_运维实战技巧_常用代码速查手册,Shell脚本实战精华,100例运维技巧与代码速查手册

最近在服务器上执行批量操作时总得手动敲命令?面对重复性工作还在当人肉机器人?​​Shell脚本就是你的数字员工​​!今天咱们用真实运维场景拆解常用代码,保你看完就能复制粘贴用起来。


一、系统管理三板斧

​Q:新服务器上线要装几十个软件怎么办?​
试试这个​​批量部署脚本​​,比手动操作快10倍:

bash复制
#!/bin/bashPACKAGES=("httpd" "mariadb-server" "php" "python3")for pkg in "${PACKAGES[@]}"doyum -y install $pkg || echo "$pkg安装失败" >> error.logdonesystemctl enable httpd mariadb

​对比传统安装方式​​:

操作方式耗时错误率可追溯性
手动安装30分钟无记录
脚本安装3分钟有日志

二、文件处理绝活

​Q:每周五凌晨自动备份日志咋实现?​
​定时备份组合拳​​帮你搞定:

bash复制
#!/bin/bashBACKUP_DIR="/var/logbackup/$(date +%Y%m%d)"mkdir -p $BACKUP_DIRfind /var/log -name "*.log" -exec tar -czf $BACKUP_DIR/logs.tar.gz {} +

​进阶技巧​​:

  • 添加--newer-mtime参数实现增量备份
  • 配合openssl加密敏感日志
  • rsync同步到异地服务器

三、监控预警系统

​Q:服务器资源不足时如何自动报警?​
​智能监控脚本​​比人工巡检靠谱:

bash复制
#!/bin/bashALERT_THRESHOLD=90DISK_USAGE=$(df / | awk 'NR==2{print $5}' | tr -d '%')if [ $DISK_USAGE -gt $ALERT_THRESHOLD ]; thenecho "服务器根分区使用率${DISK_USAGE}%" | mail -s "紧急告警" admin@example.comfi

​监控指标扩展包​​:

  • 内存占用率监控:free -m | awk '/Mem/{print $3/$2 * 100}'
  • CPU负载检测:uptime | awk -F 'load average:' '{print $2}'
  • 进程数预警:ps -ef | wc -l

四、用户管理秘籍

​Q:批量创建100个带初始密码的用户?​
​用户流水线生成术​​来帮忙:

bash复制
#!/bin/bashfor i in {1..100}doUSERNAME="user$i"PASSWORD=$(openssl rand -base64 6)useradd $USERNAME && echo $PASSWORD | passwd --stdin $USERNAMEdone

​安全加强版​​:

  • 密码复杂度校验
  • 家目录权限自动设置
  • 登录失败次数限制

五、实用小工具集

​文本内容提取术​​:

bash复制
# 提取Nginx日志中的异常状态码awk '$9 ~ /50[0-9]/ {print $1,$7,$9}' access.log

​文件批量重命名​​:

bash复制
# 给所有.jpg文件添加日期前缀for file in *.jpg; do mv "$file" "$(date +%Y%m%d)_$file"; done

​网络诊断工具​​:

bash复制
# 持续检测域名解析状态while true; do dig example.com +short && sleep 5; done

个人实战心得

八年运维老鸟的血泪经验:​​别在脚本里写绝对路径​​!上周刚因为这个坑导致集群瘫痪。推荐用$(dirname "$0")获取脚本所在目录,再也不用担心路径错误。​​变量引号要加全​​,处理带空格文件名时吃过亏的都知道多重要。

最容易被忽视的​​脚本调试技巧​​:在关键位置插入set -x显示执行过程,用trap 'echo "错误发生在第$LINENO行"' ERR捕获异常位置。记住,好脚本不是写出来的,是调出来的!