查看: 119|回复: 0

Shell 完整详解|AI 大模型运维自动化脚本实战指南

[复制链接]

849

主题

1

回帖

2602

积分

超级版主

积分
2602
发表于 2026-8-14 09:05:49 | 显示全部楼层 |阅读模式
导语

        本地 Ollama、云端 vLLM 推理集群、RAG 知识库服务器、模型批量转换场景,几乎全部依赖 Shell 命令与自动化脚本。很多新手分不清终端、Shell、操作系统内核三者区别,只会单点敲命令,不会批量自动化部署、日志筛选、进程监控、模型定时备份,重复手动操作效率极低。本期通俗拆解 Shell 底层定位,区分 Bash/Zsh/PowerShell 主流版本,讲解管道、变量、循环、条件判断核心语法,配套 vLLM 一键启停、模型批量下载、日志过滤、定时备份可直接运行 Shell 脚本,覆盖 AI 运维全场景落地。


一、Shell 核心定义:内核与用户的中间翻译层

三层核心关系(餐厅通俗类比)

  • 操作系统内核(Kernel)= 后厨:直接管理 CPU、GPU、内存、硬盘、网络硬件,普通人无法直接下发底层硬件指令;
  • Shell(壳程序)= 服务员:命令解释器,接收人类文字指令,翻译成内核可执行系统调用,执行完成后返回结果;
  • Terminal 终端 = 餐桌窗口:黑窗口交互界面,仅负责接收键盘输入、展示文字输出,本身不具备命令解析能力。完整数据流:用户输入 → 终端 → Shell 解析命令 → 内核调度硬件执行 → 结果回显终端。
核心价值四大优势(AI 运维刚需)

  • 操作极速:图形界面多层点击,Shell 一行命令完成目录切换、进程启停;
  • 精准可控可指定权限、过滤日志、限制 GPU 显存,无图形界面隐藏参数;
  • 自动化可复用多条命令写成.sh脚本,一键完成模型部署、定时备份;
  • 服务器标配云 GPU 机器无图形桌面,远程 SSH 只能依靠 Shell 完成全部运维。

主流 Shell 版本区分对照表


Shell 类型适用系统核心特点AI 运维推荐场景
BashLinux 全系列、macOS 默认、WSL兼容性最强,所有 Linux 服务器标配,脚本通用云端 GPU 推理服务器(首选)
ZshmacOS、本地开发机智能补全、语法高亮、Oh My Zsh 插件生态本地调试、模型测试电脑
PowerShellWindows 跨平台面向对象,原生 JSON 处理Windows 本地 AI 开发
CMD老旧 Windows语法简陋,功能有限不推荐 AI 项目使用



二、Shell 两大使用模式:交互式单命令 + 脚本批量执行

1 交互式(实时敲命令)

SSH 登录服务器、本地终端手动输入单条指令,执行后立刻输出结果。AI 常用基础命令:

  1. # 查看GPU显存占用
  2. nvidia-smi
  3. # 进入模型存放目录
  4. cd /data/models
  5. # 列出目录内模型文件
  6. ls -lh
  7. # 查找vLLM日志内报错关键词
  8. grep "OOM" vllm.log
  9. # 杀死卡死推理进程
  10. pkill -f vllm
复制代码

2 Shell 脚本(.sh文件自动化)

将整套部署、监控、备份流程写入文件,一次性批量执行,无需重复输入命令。脚本首行固定声明解释器:#!/bin/bash,赋予执行权限chmod +x run.sh后./run.sh运行。
三、Shell 核心基础语法(AI 脚本必备)

1 管道符 |:命令流水线

前一条输出作为后一条输入,日志过滤、进程筛选高频用法:

  1. # 筛选正在运行的vLLM进程
  2. ps aux | grep vllm
  3. # 统计日志中报错总条数
  4. cat service.log | grep "error" | wc -l
复制代码

2 变量:模型路径、端口统一配置

  1. # 定义全局变量
  2. MODEL_PATH="/data/Qwen2.5-7B-Instruct"
  3. GPU_PORT=8000
  4. # 调用变量使用$
  5. vllm serve $MODEL_PATH --port $GPU_PORT
复制代码

3 条件判断:进程存在检测

  1. # 判断vLLM是否在运行
  2. if pgrep -f "vllm serve" > /dev/null
  3. then
  4.   echo "vLLM服务已启动"
  5. else
  6.   echo "服务未运行,开始启动"
  7. fi
复制代码

4 循环:批量转换 / 批量下载模型


  1. # 遍历目录下全部模型文件
  2. for model in /data/models/*.gguf
  3. do
  4.   echo "正在处理模型:$model"
  5. done
复制代码

5 输出重定向:日志持久保存

  1. # 后台运行并把全部日志写入文件
  2. vllm serve Qwen2.5-7B > vllm_run.log 2>&1 &
  3. # & 代表后台执行,不占用终端窗口
复制代码

四、AI 运维可直接复制实战 Shell 脚本

脚本 1 vLLM 一键启停监控脚本 start_vllm.sh

  1. #!/bin/bash
  2. # 配置参数
  3. MODEL="Qwen2.5-7B-Instruct"
  4. PORT=8000
  5. LOG_FILE="./vllm_service.log"
  6. PID_FILE="./vllm.pid"

  7. # 判断服务是否已运行
  8. if [ -f "$PID_FILE" ]; then
  9.     OLD_PID=$(cat $PID_FILE)
  10.     if ps -p $OLD_PID > /dev/null 2>&1; then
  11.         echo "vLLM 正在运行,PID:$OLD_PID"
  12.         exit 0
  13.     else
  14.         rm -f $PID_FILE
  15.     fi
  16. fi

  17. # 启动推理服务,后台运行
  18. echo "正在启动 $MODEL 推理服务,端口$PORT"
  19. vllm serve $MODEL \
  20. --port $PORT \
  21. --host 0.0.0.0 \
  22. --gpu-memory-utilization 0.75 \
  23. > $LOG_FILE 2>&1 &

  24. # 记录进程PID
  25. echo $! > $PID_FILE
  26. echo "启动完成,日志输出至 $LOG_FILE"
复制代码

执行授权:chmod +x start_vllm.sh,运行:./start_vllm.sh
脚本 2 模型配置定时备份脚本 backup_model.sh

  1. #!/bin/bash
  2. BACKUP_DIR="/data/model_backup"
  3. MODEL_CONF="/data/models"
  4. TIME=$(date +%Y%m%d_%H%M)
  5. mkdir -p $BACKUP_DIR

  6. # 仅备份配置json,不备份大权重文件
  7. tar -czf $BACKUP_DIR/conf_$TIME.tar.gz \
  8. $(find $MODEL_CONF -name "config.json" -o -name "tokenizer_config.json")

  9. # 删除7天前旧备份
  10. find $BACKUP_DIR -name "*.tar.gz" -mtime +7 -delete
  11. echo "备份完成:$BACKUP_DIR/conf_$TIME.tar.gz"
复制代码

脚本 3 日志错误实时监控脚本 watch_error.sh

  1. #!/bin/bash
  2. LOG_PATH="./vllm_service.log
  3. # 实时跟踪日志,仅打印报错内容
  4. tail -f $LOG_PATH | grep --color=auto "ERROR\|OOM\|timeout"
复制代码
五、AI 项目 Shell 典型使用场景

场景 1 云端 GPU 服务器远程运维

SSH 远程连接 GPU 主机,使用 Shell 启停 vLLM、查看显卡负载、清理磁盘模型缓存、排查推理 OOM 报错日志。
场景 2 本地批量模型处理

循环批量转换 GGUF 量化模型、批量下载开源权重、批量清理无用模型文件释放硬盘。
场景 3 定时自动化任务

搭配 Linux crontab 定时执行备份脚本、凌晨低峰重启推理服务、定时清理过期对话日志。定时示例(每天凌晨 2 点执行备份):

  1. 0 2 * * * /data/backup_model.sh
复制代码
场景 4 CI/CD 部署流水线

服务器自动化拉取代码、安装 Python 依赖、重启大模型 API 服务,全程无人工操作。
六、新手高频认知误区澄清

误区 1 黑窗口 = Shell

纠正黑窗口是 Terminal 终端,仅负责输入输出,Shell 是后台命令解析程序。
误区 2 Windows 不能用 Bash

纠正 WSL、Git Bash 均可在 Windows 运行标准 Bash 脚本,开发环境统一语法。
误区 3 脚本写完直接就能运行

纠正必须执行chmod +x xxx.sh赋予执行权限,否则提示权限不足。
误区 4 Shell 只能简单操作,复杂任务用 Python 更好

纠正简单部署、日志筛选、定时运维 Shell 脚本行数更少、资源消耗极低;复杂数据处理搭配 Python 即可。
误区 所有系统 Shell 脚本通用

纠正 Windows PowerShell 脚本.ps1无法在 Linux Bash 直接运行,服务器统一使用 Bash。
七、线上 Shell 运维高频故障与解决

故障 1 执行脚本提示 Permission denied

根因无执行权限;修复chmod +x 脚本名。
故障 2 后台 vLLM 关闭终端就退出

根因未使用nohup或&后台托管;修改启动命令末尾加&,或用 nohup。
故障 3 磁盘爆满,找不到大模型文件

使用 Shell 命令查找大文件:du -h /data | sort -hr。
故障 4 日志刷屏,找不到 OOM 崩溃记录

使用管道过滤:cat log.log | grep -i OOM。
故障 5 SSH 远程连接断开服务停止

搭配nohup ./start_vllm.sh &脱离终端会话运行。
八、本期全文总结

1 Shell 是内核与用户的命令翻译层,终端、Shell、内核三层分工清晰;2 分为交互式单命令、.sh脚本自动化两种使用方式,云端 GPU 服务器标配 Bash;3 管道、变量、循环、判断是编写 AI 运维脚本四大核心语法;4 配套 vLLM 启停、模型备份、日志监控可直接落地 Shell 脚本;5 适配 GPU 远程运维、批量模型处理、定时备份、CI 部署全场景;6 区分 Bash/Zsh/PowerShell 适用系统,服务器统一使用 Bash 保证兼容性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|天翼网

相关侵权、举报、投诉及建议等,请发 E-mail:2026@typc.net

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|晋ICP备2026008270号-1|晋公网安备14010602111293号

QQ客服返回顶部