news 2026/9/6 11:48:33

Linux复习与机器人排障实操笔记

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux复习与机器人排障实操笔记

Linux复习与机器人排障实操笔记

用途:复习机器人测试中最常用的 Linux 命令和排障思路。

本笔记来自实际练习,环境为 Windows + WSL2 + Ubuntu 24.04 LTS。

一、学习目标

机器人测试不要求一开始掌握完整 Linux,而是先能定位以下问题:

程序是否启动? 日志有没有报错? CPU、内存、磁盘是否正常? 网络和端口是否正常? USB、串口、CAN 设备是否被识别? 测试脚本是否有执行权限?

核心排障链:

程序启动状态 -> 日志错误 -> 系统资源 -> 网络端口 -> 设备和驱动 -> 权限和配置 -> 判断软件、硬件还是环境问题

二、当前环境

系统:Ubuntu 24.04 LTS 运行方式:WSL2 用户:yjw 用户主目录:/home/yjw 练习目录:~/robot_test

验证环境:

whoamicat/etc/os-releaseuname-rpwd

注意:WSL 适合学习 Linux 命令、ROS2 基础和仿真。真实机器人 USB、串口、CAN 设备需要额外映射,不能默认认为 WSL 已经连接了真实设备。

三、文件和目录

3.1 常用命令

命令作用
pwd查看当前所在目录
ls查看目录内容
ls -lah查看详细信息、文件大小和隐藏文件
cd 目录进入目录
mkdir -p 目录创建目录,包括不存在的父目录
touch 文件创建空文件
cp 源 目标复制文件或目录
mv 源 目标移动或重命名
rm 文件删除文件,操作前确认路径

3.2 实操记录

mkdir-p~/robot_test/logscd~/robot_testpwdls-lah

预期当前目录:

/home/yjw/robot_test

四、日志查看和筛选

4.1 常用命令

命令作用
cat 文件一次性查看文件
less 文件分页查看大文件,按 q 退出
head 文件查看文件开头
tail 文件查看文件结尾
tail -n 2 文件查看最后 2 行
tail -f 文件持续查看新增日志
grep 关键词 文件按关键词筛选
grep -n 关键词 文件筛选并显示行号
grep -i忽略大小写
grep -E "AB"

4.2 创建模拟机器人日志

cd~/robot_testprintf"INFO robot started\nWARN lidar delay 120ms\nERROR navigation timeout\nINFO robot stopped\n">logs/robot.log

查看日志:

catlogs/robot.loggrep-nE"WARN|ERROR|timeout"logs/robot.logtail-n2logs/robot.log

预期筛选结果包括:

WARN lidar delay 120ms ERROR navigation timeout

4.3 实时监控日志

终端 1:

cd~/robot_testtail-flogs/robot.log

终端 2:

cd~/robot_testecho"WARN lidar delay 300ms">>logs/robot.logecho"ERROR obstacle detection timeout">>logs/robot.log

终端 1 会立即显示新增内容。按以下组合键停止:

Ctrl + C

4.4 本次遇到的路径错误

错误命令:

grep-nE"ERROR|WARN|timeout|failed"robot.log

错误原因:当前目录是 ~/robot_test,实际文件位于 ~/robot_test/logs/robot.log。

正确命令:

grep-nE"ERROR|WARN|timeout|failed"logs/robot.log

也可以使用绝对路径:

grep-nE"ERROR|WARN|timeout|failed"/home/yjw/robot_test/logs/robot.log

排障记忆:看到 No such file or directory,先检查当前目录和文件路径,不要马上判断程序故障。

五、进程和系统资源

5.1 常用命令

命令作用
ps aux查看所有进程
ps aux | head查看进程列表开头
pgrep -af python查找 Python 进程及启动命令
top实时查看 CPU、内存和进程
free -h查看内存和 Swap
df -h查看磁盘空间
pkill -f “关键词”按命令行关键词停止进程

退出 top:

q

5.2 机器人测试中的判断

程序没启动 -> ps aux / pgrep 程序卡死或CPU占用过高 -> top 内存不足 -> free -h 磁盘满,日志无法写入 -> df -h

本次练习结果:

内存可用约 6.9 GiB Ubuntu 根目录使用约 1% 未发现明显 CPU、内存或磁盘瓶颈

注意:/mnt/c、/mnt/d 是 Windows 盘挂载目录,不是 Ubuntu 根目录。查看磁盘时要区分 / 和 /mnt/d。

六、网络和端口

6.1 常用命令

命令作用
ip addr查看网卡和 IP 地址
ping -c 4 127.0.0.1测试本机网络协议栈
ss -lntp查看 TCP 监听端口和进程
curl URL请求并验证服务
pkill -f “关键词”停止测试服务

6.2 模拟端口服务

启动服务:

python3-mhttp.server8080>/tmp/robot-server.log2>&1&

确认端口:

ss-lntp|grep8080

预期能看到 LISTEN、8080 和 python3。

访问服务:

curlhttp://127.0.0.1:8080

停止服务:

pkill-f"http.server 8080"

6.3 机器人测试中的判断

节点启动但通信失败 -> 检查 IP、端口、进程和日志 端口连接失败 -> ss -lntp 看是否监听 端口已监听但访问失败 -> curl 验证服务,再检查防火墙和配置

本次练习结果:本机 ping 为 0% packet loss,Python 成功监听 8080,curl 成功返回网页内容。

七、USB、串口和内核日志

7.1 安装工具

如果执行 lsusb 提示命令不存在:

sudoaptupdatesudoaptinstall-yusbutils

7.2 常用命令

lsusbdmesg-T|tail-n20dmesg-T|grep-iE"usb|tty|serial|can|error|fail"ls-l/dev/ttyUSB* /dev/ttyACM*2>/dev/null||echo"当前没有USB串口设备"
命令作用
lsusb查看 USB 设备
dmesg -T查看带时间的内核和设备日志
ls /dev/ttyUSB*查看 USB 转串口设备
ls /dev/ttyACM*查看 USB CDC/ACM 串口设备

7.3 本次结果如何判断

lsusb 没找到 -> 先安装 usbutils lsusb 没有机器人设备 -> 当前没有USB设备或WSL未映射 没有 ttyUSB/ttyACM -> 当前没有USB串口设备 dmesg 有 WSL/KVM 日志 -> 多数是运行环境信息,不等于机器人故障

WSL 中没有真实 USB 设备是正常现象。真实机器人测试还要关注:

USB 设备映射 串口权限 设备驱动 CAN 适配器和 can0 设备波特率与协议配置

八、权限和脚本

8.1 创建脚本

cd~/robot_testprintf'#!/bin/bash\necho "robot test started"\ndate\necho "robot test finished"\n'>check_robot.sh

第一次执行:

./check_robot.sh

如果出现:

Permission denied

查看权限:

ls-lcheck_robot.sh

添加执行权限:

chmod+x check_robot.sh ./check_robot.sh

8.2 权限含义

例如:

-rwxr-xr-x

其中 x 表示执行权限。

排障记忆:

脚本无法启动 -> ls -l 看权限 -> chmod +x 添加执行权限 -> 再次执行

机器人测试脚本还可能因为以下原因无法运行:

Python 环境不对 依赖未安装 路径写错 设备权限不足 配置文件不存在

九、机器人测试排障速查表

现象第一批检查进一步判断
程序没启动ps aux、pgrep看启动命令和启动日志
日志没有新增tail -f、ps aux查进程是否存活、日志路径是否正确
日志报 timeoutgrep、ss、ping区分网络、服务、设备响应超时
端口连接失败ss -lntp判断服务是否监听、配置端口是否一致
CPU 很高top定位具体 PID 和命令
内存不足free -h看进程是否持续增长、是否需要重启
磁盘写满df -h检查日志、临时文件和历史报告
USB 设备不见lsusb、dmesg检查映射、驱动、线缆和权限
串口打不开ls -l /dev/tty*检查用户组、设备占用和波特率
脚本不能执行ls -l、chmod +x检查解释器、依赖和配置

十、证据链意识

机器人问题不能只写“运行失败”,需要保存能互相对齐的证据:

视频:记录机器人实际动作 终端日志:记录程序状态和错误 传感器数据:记录雷达、IMU、编码器等输出 rosbag:记录 ROS2 话题数据 网络/CAN 报文:记录通信过程 时间轴:把视频、日志、传感器和报文对齐

建议记录:

测试开始时间 软件版本和配置 硬件、传感器和固件版本 环境条件 复现步骤 异常发生的准确时间 日志文件路径 测试结果和结论

十一、复习题

基础题

  1. pwd 和 ls -lah 分别查看什么?
  2. 日志文件位于 logs/robot.log,当前目录是 ~/robot_test,如何筛选 ERROR?
  3. 如何实时查看机器人日志?如何退出?
  4. Permission denied 的第一步检查什么?
  5. 如何查看 8080 端口是否被监听?
  6. 如何查看当前运行的 Python 进程?
  7. 如何查看内存和磁盘空间?
  8. lsusb 没有命令时怎么处理?

面试表达

我在机器人测试中会先确认进程是否正常,再查看日志中的 ERROR、WARN 和 timeout;随后检查 CPU、内存、磁盘、网络端口以及 USB/串口设备。对于 WSL 环境,我会特别区分系统环境日志和真实设备日志。最终结合视频、日志、传感器数据、rosbag 和 CAN 报文按时间轴对齐,判断问题属于软件、硬件、通信还是环境。

十二、下一步

Linux 复习完成后,进入主线:

ROS2 通信模型 -> ROS2 命令与调试工具 -> TurtleBot3/Gazebo -> AGV 导航测试 -> 故障注入 -> pytest 自动化与报告
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/6 11:45:06

VM虚拟机全攻略:从安装配置到网络排错与性能优化

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 11:39:54

希捷Exos vs 西数Ultrastar:企业级硬盘选型与核心技术对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/6 11:36:37

Redis 应用实战(3):热 key 与大 key 治理

上一篇通过 TTL 抖动与请求合并压住集中回源,但缓存内部仍可能严重倾斜。本篇把两个常被混称的问题拆开:热 key 是访问频率异常,大 key 是单个 value 或集合规模异常。前者消耗执行与网络吞吐,后者放大传输、复制、持久化和释放成…

作者头像 李华
网站建设 2026/9/6 11:36:35

ARM Mali GPU链接问题全解析:从驱动栈到交叉编译调试

1. 从一块板子报错说起:为什么Mali GPU的“链接”这么重要前阵子帮朋友调一块RK3588的开发板,系统是Debian系的ARM64发行版,跑一个OpenGL ES的渲染demo。编译都过了,一执行直接甩了个运行时报错:error while loading s…

作者头像 李华
网站建设 2026/9/6 11:34:10

Redis 应用实战(4):分布式锁实现

上一篇处理了流量和容量集中,本篇转向并发执行集中:多个进程都认为自己应该修改同一资源。Redis 锁只是一份带期限的协调记录,不是数据库事务。可靠边界由原子获取、随机所有者令牌、比较后释放,以及由最终资源验证的 fencing tok…

作者头像 李华
网站建设 2026/9/6 11:33:27

上位机开发实战:从通信协议选型到项目落地全解析

1. 上位机不是"一台电脑"那么简单:先把行业底层逻辑捋清楚1.1 上位机和下位机怎么分工先回答一个很多新人问过我的问题:上位机到底是啥?简单说,上位机就是发出指令、做数据展示和分析的那一端,通常跑在PC、工…

作者头像 李华