news 2026/1/30 19:32:00

Shell 编程规范 运维脚本模板(建议收藏)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Shell 编程规范 运维脚本模板(建议收藏)

一、为什么运维必须讲 Shell 规范?

真实事故来源👇

  • rm 少了目录校验

  • 脚本失败却继续执行

  • 日志没打,事后无法追溯

  • 同事接手脚本完全看不懂

📌结论一句话

Shell 脚本 = 代码 代码 = 必须有规范


二、Shell 脚本通用规范(强烈建议)

1️⃣ 必须指定解释器

#!/bin/bash

❌ 禁止省略 ❌ 禁止依赖环境猜测


2️⃣ 开头统一开启安全模式

set -euo pipefail

含义说明:

参数

作用

-e

命令失败立即退出

-u

使用未定义变量直接报错

-o pipefail

管道中任一失败即失败

👉生产脚本强烈建议开启


3️⃣ 脚本必须写说明注释

# ------------------------------------------------------------------
# 脚本名称: backup_mysql.sh
# 功能描述: MySQL 数据库定时备份
# 作者: 运维部
# 创建时间: 2025-xx-xx
# 使用说明: ./backup_mysql.sh
# ------------------------------------------------------------------

📌不是给自己看的,是给“接盘的人”看的


三、变量命名规范(非常重要)

1️⃣ 全局变量:全部大写

BACKUP_DIR="/data/backup"
LOG_FILE="/var/log/backup.log"


2️⃣ 局部变量:小写 + local

backup_db() {
local db_name=$1
}

❌ 禁止函数里直接用全局变量当临时变量


3️⃣ 常量使用 readonly

readonly SCRIPT_NAME=$(basename "$0")


四、路径 & 变量的安全写法

1️⃣ 所有变量都要加引号

rm -rf "$DIR"

❌ 错误写法:

rm -rf $DIR

👉 防止空变量导致误删 /


2️⃣ 重要目录操作前必须校验

[ -d "$BACKUP_DIR" ] || mkdir -p "$BACKUP_DIR"


五、函数使用规范

1️⃣ 所有逻辑必须进函数

❌ 不推荐:

echo "开始备份"
mysqldump ...

✅ 推荐:

main() {
echo "开始备份"
backup_mysql
}


2️⃣ main 函数统一入口

main "$@"

📌让脚本结构一眼就能看懂


六、日志规范(运维脚本灵魂)

1️⃣ 标准日志函数

log() {
echo "$(date '+%F %T') [$1] $2" | tee -a "$LOG_FILE"
}

调用:

log INFO "备份开始"
log ERROR "备份失败"


2️⃣ 禁止裸 echo 关键信息

echo "失败了"

log ERROR "数据库备份失败"


七、错误处理规范

1️⃣ 必须捕获异常退出

trap 'log ERROR "脚本异常退出"; exit 1' ERR


2️⃣ 主动判断关键命令

if ! mysqldump ...; then
log ERROR "mysqldump 执行失败"
exit 1
fi


八、参数校验规范

示例:校验参数个数

if [ $# -ne 1 ]; then
echo "Usage: $0 <backup_dir>"
exit 1
fi

👉永远不要假设用户会正确使用脚本


九、运维通用 Shell 脚本模板(可直接用)

📌这是整篇文章的核心,建议直接收藏

#!/bin/bash
set -euo pipefail

# ================== 基本信息 ==================
SCRIPT_NAME=$(basename"$0")
LOG_FILE="/var/log/${SCRIPT_NAME}.log"
readonly SCRIPT_NAME
readonly LOG_FILE

# ================== 日志函数 ==================
log() {
local level=$1
local msg=$2
echo"$(date '+%F %T') [$level] $msg" | tee -a "$LOG_FILE"
}

# ================== 错误捕获 ==================
trap'log ERROR "脚本执行异常,已退出"; exit 1' ERR

# ================== 功能函数 ==================
check_env() {
log INFO "检查运行环境"
command -v tar >/dev/null || { log ERROR "tar 未安装"; exit 1; }
}

backup_data() {
local src="/data"
local dst="/backup/data_$(date +%F).tar.gz"

log INFO "开始备份 $src"
tar czf "$dst""$src"
log INFO "备份完成:$dst"
}

# ================== 主函数 ==================
main() {
check_env
backup_data
log INFO "脚本执行完成"
}

main "$@"

👉这套结构,适用于 90% 运维脚本


十、生产环境 Shell 编程黄金法则

📌 记住这 5 条:

1️⃣ 所有脚本都能反复执行 2️⃣ 所有关键操作都有日志 3️⃣ 所有变量都有保护 4️⃣ 所有失败都能立刻退出 5️⃣ 所有人接手都能看懂


Shell 编程不是炫技, 而是:稳定、可控、可维护

📌 到这里,你已经具备:

  • 写 Shell 的能力

  • 上线 Shell 的底气

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/14 20:59:42

49 Harbor私有镜像仓库

文章目录前言理论部分10_Harbor私有仓库概述10.1_搭建本地私有仓库①_下载registry镜像②_配置Docker守护进程③_运行Registry容器④_Docker容器的重启策略⑤_镜像操作原理10.2_Harbor_简介①_什么是Harbor②_Harbor特性③_Harbor架构10.3_部署Harbor服务①_安装DockerCompose②…

作者头像 李华
网站建设 2026/1/21 16:47:10

终极数字人视频生成器:5分钟打造专业级AI虚拟形象

终极数字人视频生成器&#xff1a;5分钟打造专业级AI虚拟形象 【免费下载链接】HunyuanVideo-Avatar HunyuanVideo-Avatar&#xff1a;基于多模态扩散Transformer的音频驱动人像动画模型&#xff0c;支持生成高动态、情感可控的多角色对话视频。输入任意风格头像图片与音频&…

作者头像 李华
网站建设 2026/1/28 2:39:43

PyTorch-CUDA-v2.6镜像是否支持CIFS/SMB共享访问?

PyTorch-CUDA-v2.6 镜像与 CIFS/SMB 共享访问&#xff1a;工程实践中的数据接入方案 在现代 AI 开发环境中&#xff0c;一个看似简单的问题常常困扰工程师&#xff1a;“我能不能直接在 PyTorch 容器里挂载 Windows 文件服务器上的数据&#xff1f;”这背后其实涉及容器隔离机制…

作者头像 李华
网站建设 2026/1/11 7:21:45

Apache ShenYu网关强力整合Spring Cloud微服务架构实战指南

Apache ShenYu网关强力整合Spring Cloud微服务架构实战指南 【免费下载链接】shenyu Apache ShenYu is a Java native API Gateway for service proxy, protocol conversion and API governance. 项目地址: https://gitcode.com/gh_mirrors/sh/shenyu 在当今微服务架构盛…

作者头像 李华
网站建设 2026/1/15 9:44:33

Nextcloud Docker部署平滑升级终极指南:企业级零数据丢失方案

面对Nextcloud Docker镜像升级时&#xff0c;您是否担心配置丢失、数据损坏或服务中断&#xff1f;本文提供完整的风险防控体系&#xff0c;通过四阶段升级策略确保企业级部署的平滑过渡。&#x1f680; 【免费下载链接】docker ⛴ Docker image of Nextcloud 项目地址: http…

作者头像 李华
网站建设 2026/1/26 3:12:22

终极微信Mac版增强指南:解锁防撤回与多开强大功能

终极微信Mac版增强指南&#xff1a;解锁防撤回与多开强大功能 【免费下载链接】WeChatTweak-macOS A dynamic library tweak for WeChat macOS - 首款微信 macOS 客户端撤回拦截与多开 &#x1f528; 项目地址: https://gitcode.com/gh_mirrors/we/WeChatTweak-macOS 还…

作者头像 李华