当前位置: 首页 > news >正文

jetson_yolo_deployment 02_linux_dev_skills

02 — Linux 开发必备技能

作者:智汇嵌入式实验室 · 7yewh

本文件是 Jetson YOLO 部署系列的第 2 篇。
目标:掌握部署过程中真正用得到的 Linux 技能,不贪多,只求实战够用。


1. Shell 脚本基础

部署时经常需要写脚本来自动化流程:启动推理、批量转换模型、定时录制等。

1.1 最小可用脚本

#!/bin/bash# 文件名:run_inference.sh# 功能:启动 YOLO 推理echo"==============================="echo" 启动 YOLO 推理"echo"==============================="# 激活虚拟环境source~/envs/yolo/bin/activate# 运行推理python3 detect.py--weightsyolov8n.pt--source0--device0echo"推理结束"
# 给脚本执行权限chmod+x run_inference.sh# 运行./run_inference.sh

1.2 变量与参数

#!/bin/bash# 变量定义(等号两边不能有空格!)MODEL="yolov8n.pt"INPUT="./test_images/"DEVICE=0CONF=0.5# 使用变量python3 detect.py\--weights$MODEL\--source$INPUT\--device$DEVICE\--conf$CONF# 命令行参数# $1 是第一个参数,$2 是第二个,$# 是参数总数# 用法:./run.sh yolov8s.pt 0.7MODEL=${1:-"yolov8n.pt"}# 如果没传参数,用默认值CONF=${2:-0.5}

1.3 条件判断

#!/bin/bash# 检查文件是否存在if[-f"model.onnx"];thenecho"模型文件存在,开始转换"python3 convert.pyelseecho"错误:model.onnx 不存在!"exit1fi# 检查 GPU 是否可用ifnvidia-smi>/dev/null2>&1;thenecho"检测到 NVIDIA GPU"DEVICE=0elseecho"未检测到 GPU,使用 CPU"DEVICE="cpu"fi# 检查目录是否存在,不存在则创建[-d"./output"]||mkdir-p./output

1.4 循环

#!/bin/bash# 批量处理图片forimgin./images/*.jpg;doecho"处理:$img"python3 detect.py--source"$img"--savedone# 批量转换模型精度forprecisioninfp32 fp16 int8;doecho"转换$precision模型..."python3 export.py--precision$precisiondone# while 循环(持续监控 GPU 温度)whiletrue;dotemp=$(cat/sys/devices/virtual/thermal/thermal_zone0/temp)echo"GPU 温度:$((temp/1000))°C"sleep5done

1.5 实用模板:部署启动脚本

#!/bin/bash# deploy.sh — 一键部署脚本set-e# 任何命令失败就停止echo"[1/4] 检查环境..."python3-c"import torch; assert torch.cuda.is_available()"||{echo"错误:CUDA 不可用!"exit1}echo"[2/4] 导出 ONNX..."python3 export_onnx.py--weightsbest.pt--imgsz640echo"[3/4] 转换 TensorRT..."/usr/src/tensorrt/bin/trtexec\--onnx=best.onnx\--saveEngine=best.engine\--fp16echo"[4/4] 启动推理..."python3 infer_trt.py--enginebest.engine--source0echo"部署完成!"

2. 进程管理

推理程序可能要长时间运行,你需要知道怎么管理进程。

2.1 前台 / 后台运行

# 前台运行(占住终端,Ctrl+C 停止)python3 detect.py--source0# 后台运行(加 & 符号)python3 detect.py--source0&# 终端可以继续用,程序在后台跑# 查看后台任务jobs# 把后台任务拉回前台fg# Ctrl+Z 暂停当前任务 → bg 让它在后台继续

2.2 nohup + & (断开 SSH 后继续运行)

# 问题:SSH 断开后,后台程序也会被杀死# 解决:用 nohupnohuppython3 detect.py--sourcevideo.mp4>output.log2>&1&# 解释:# nohup 不受 SSH 断开影响# > output.log 标准输出写入文件# 2>&1 错误输出也写入同一文件# & 后台运行# 查看输出tail-foutput.log# 查看进程psaux|grepdetect.py# 杀死进程kill<PID>

2.3 tmux(推荐,比 nohup 更好用)

tmux 是终端复用器,可以创建多个"虚拟终端",SSH 断开后自动保持。

# 安装sudoaptinstalltmux# 创建新会话tmux new-syolo# 在 tmux 里运行推理python3 detect.py--source0# 断开会话(程序继续运行)# 按 Ctrl+B,然后按 D# 重新连接会话tmux attach-tyolo# 列出所有会话tmuxls# 杀死会话tmux kill-session-tyolo

tmux 常用快捷键(先按 Ctrl+B,再按后面的键):

快捷键作用
d断开(detach),回到正常终端
c创建新窗口
n/p下一个 / 上一个窗口
%左右分屏
"上下分屏
方向键在分屏间切换

3. 系统监控

推理时你需要知道 GPU 是否满载、内存是否够用、温度是否正常。

3.1 GPU 监控(nvidia-smi)

# 一次性查看nvidia-smi# 输出示例:# +-------------------------------+# | GPU Name Persistence-M|# | Fan Temp Perf Pwr:Usage/Cap|# | 40C P0 10W / 15W |# +-------------------------------+# | Processes: |# | GPU PID Type Process name |# | 0 1234 C python3 | ← 你的推理进程# +-------------------------------+# 持续监控(每 1 秒刷新)watch-n1nvidia-smi# Jetson 专用监控工具(更详细)sudotegrastats# 输出:RAM 2048/4096MB | CPU [45%@1420,38%@1420] | GPU 65%@921 | ...

3.2 CPU / 内存监控

# htop(交互式,推荐)htop# 按 q 退出# 按 F6 选择排序方式(按 CPU%、MEM% 等)# 查看内存free-h# 输出:# total used free available# Mem: 3.9Gi 2.1Gi 0.3Gi 1.5Gi# Swap: 2.0Gi 0.5Gi 1.5Gi# Jetson 内存很少(Nano 4GB),如果 free 很低:# 1. 减小 batch size# 2. 用更小的模型# 3. 增大 swap

3.3 温度监控

# Jetson 温度cat/sys/devices/virtual/thermal/thermal_zone*/temp# 输出是毫度,除以 1000 得到摄氏度# 一键查看所有温度forzonein/sys/devices/virtual/thermal/thermal_zone*/temp;doname=$(cat$(dirname $zone)/type)temp=$(cat$zone)echo"$name:$((temp/1000))°C"done# 温度安全范围:# < 60°C:正常# 60-80°C:高负载,正常但注意散热# > 80°C:过热,会自动降频(throttling)

3.4 磁盘 I/O

# 查看磁盘读写速度iotop# 需要 sudo apt install iotop# 查看磁盘使用df-h# 如果 SD 卡快满了sudoaptcleansudodockersystem prune-arm-rf~/.cache/pip

4. 网络调试

从 PC 传模型、下载数据集、远程访问推理结果,都需要网络操作。

4.1 基本网络命令

# 查看 IP 地址ipaddr show# 测试网络连通性ping8.8.8.8# 测外网ping192.168.1.1# 测网关# 查看端口占用ss-tlnp# 或netstat-tlnp# 查看网络流量ifstat# 需要 sudo apt install ifstat

4.2 端口转发(远程查看推理结果)

如果你的推理程序有 Web UI(比如 Gradio),需要通过端口转发在 PC 上查看:

# 在 PC 上执行 SSH 端口转发ssh-L8080:localhost:8080 jetson# 含义:把 Jetson 的 8080 端口映射到 PC 的 8080 端口# 然后在 PC 浏览器打开 http://localhost:8080# 也可以用 VS Code 的端口转发功能(更方便)

4.3 下载文件

# wget(最常用)wgethttps://example.com/dataset.zip# 断点续传wget-chttps://example.com/large_file.zip# curlcurl-Ohttps://example.com/model.onnx# Python 方式(有进度条)pipinstallgdown gdown https://drive.google.com/uc?id=xxxxx# Google Drive 文件

5. 文本编辑器

5.1 nano(最简单,推荐新手)

nanoconfig.yaml# 编辑完:# Ctrl+O → Enter 保存# Ctrl+X 退出

5.2 vim(高效,建议逐步学)

vimconfig.yaml# 模式:# 按 i 进入编辑模式(可以打字了)# 按 Esc 回到命令模式# 输入 :wq 保存并退出# 输入 :q! 不保存退出# 最常用操作:# dd 删除当前行# yy 复制当前行# p 粘贴# /text 搜索 text# u 撤销

5.3 实际推荐

日常开发用 VS Code Remote-SSH,编辑配置文件用 nano,高频操作熟练后再学 vim。


6. Git 基础

管理你的推理代码和配置。

# 初始化仓库gitinit# 添加文件gitadddetect.py config.yaml# 提交gitcommit-m"添加推理脚本"# 查看状态gitstatus# 查看提交历史gitlog--oneline# 克隆别人的项目(最常用)gitclone https://github.com/ultralytics/ultralytics.git# 创建分支gitcheckout-bfeature/tensorrt# 合并分支gitcheckout maingitmerge feature/tensorrt

部署时最常用的 Git 操作:

# 1. 克隆 YOLO 仓库gitclone https://github.com/ultralytics/ultralytics.git# 2. 切到特定版本gitcheckout v8.1.0# 3. 拉取更新gitpull

7. 本章实操任务

□ 1. 写一个 Shell 脚本,接收模型路径作为参数,检查文件是否存在后运行推理 □ 2. 用 tmux 创建一个会话,在里面运行一个 Python 脚本,然后断开再重连 □ 3. 用 watch -n 1 nvidia-smi 监控 GPU(如果有) □ 4. 配置 SSH 端口转发,把远程 8080 端口映射到本地 □ 5. 用 git clone 克隆 ultralytics 仓库 □ 6. 写一个循环脚本,每 5 秒打印一次 CPU 温度

智汇嵌入式实验室 · 7yewh

http://www.jsqmd.com/news/482056/

相关文章:

  • jetson_yolo_deployment 03_jetson_hardware
  • 提示工程架构师视角:AI与提示工程未来的prompt架构师工作流程
  • GA-BP采用遗传算法优化BP神经网络,注意这个优化的不是超参数,而是网络内部的权重和偏置参数...
  • 镜像中的镜子:一个技术人被AI精准围猎的270天(时间虚构的故事)
  • 沃尔玛购物卡回收避坑全攻略,让闲置变现金更安心 - 京顺回收
  • JeecgBoot低代码 AI Skills 实战:一句话自动生成表单系统
  • C语言算法专题总结(一)排序
  • 三菱PLC追剪项目:与昆仑通态触摸屏的完美协作
  • 波比跳,一个动作练遍全身 75% 肌群!
  • 血泪教训!MySQL索引我踩过的5个坑(附生产级解决方案)
  • 用WDCNN实现轴承智能故障诊断:挖掘其优越抗噪能力
  • [linux]看大小
  • [docker] 开启到debug到关闭
  • 水浒智慧与职场跃迁:AI时代的管理学启示
  • 大数据领域运用Eureka提升系统弹性
  • 基于三菱PLC和MCGS组态的药片装瓶控制系统:开启制药自动化新篇
  • Flutter跨平台开发指南:在OpenHarmony上深度驾驭Dialog与BottomSheet
  • 3月12日的笔记
  • 基于python hadoop spark hive 租房数据分析可视化系统 房源信息分析 爬虫
  • Macbook Neo挤爆牙膏也没做到的,它做到了!
  • python hadoop spark hive LDA主题分析 NLP情感分析旅游景点评论数据分析系统
  • 第二节课学习主题:搭建Web开发环境
  • 基于python spark hadoop hive 旅游推荐系统 协同过滤推荐算法
  • python hadoop spark hive 商品比价系统 爬虫+可视化
  • 2026年3月气体质量流量计公司推荐榜:五家企业客观对比与深度评测分析 - 品牌推荐
  • 聊聊初高中数学里的存在性与唯一性
  • 2026年3月气体质量流量计公司推荐榜:五家企业综合实力对比与客观评测分析 - 品牌推荐
  • 2026年3月气体质量流量计公司推荐榜:五大品牌综合实力对比与采购评测分析 - 品牌推荐
  • 2026年3月气体质量流量计公司推荐榜:五家主流企业综合对比与客观评测分析 - 品牌推荐
  • 2026年3月气体质量流量计公司推荐榜:五大品牌综合对比与深度评测 - 品牌推荐