Linux进程管理——ps/top/kill和机器人进程监控
面试翻车现场上周有个候选人简历上写着精通Linux开发。我问他你的机器人程序跑飞了CPU占用100%你怎么排查他愣了三秒说重启我说然后呢他说再重启这就是典型的会用Linux但不懂进程管理。今天这篇咱们把进程管理这件事彻底说清楚。面试考得比你想象的多。进程是什么简单说一个运行起来的程序就是进程。你执行了./robot_node系统就创建了一个进程。每个进程有唯一的编号叫PID有自己独立的内存空间有自己的运行状态。Linux是多任务系统同一时刻跑着几百个进程。你的机器人程序只是其中之一。它和系统的其他进程共享CPU、内存这些资源。ps进程的快照ps是最基础的进程查看命令。直接敲ps你只能看到当前终端的几个进程没什么用。常用的组合是ps aux$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 169344 13000 ? Ss 09:00 0:03 /sbin/init robot 12345 85.2 2.3 524288 192000 ? Sl 10:30 12:45 ./robot_node robot 12400 0.5 0.8 312000 65000 ? Sl 10:30 0:30 /opt/ros/humble/lib/robot_state_publisher各列含义PID是进程号%CPU和%MEM是资源占用RSS是实际占用的物理内存KBSTAT是进程状态COMMAND是启动命令。进程状态STAT几个常见值R是运行中S是睡眠等待事件D是不可中断睡眠通常在等IOZ是僵尸进程T是停止状态。看到Z要小心——僵尸进程说明父进程没有正确回收子进程的资源。如果你只想找特定进程用ps aux | grep robot。更直接的方式是pgrep robot只返回PID。top实时监控ps是快照top是实时监控。敲top你会看到一个不断刷新的界面top - 14:30:00 up 5 days, 3:20, 2 users, load average: 1.25, 0.98, 0.85 Tasks: 256 total, 2 running, 254 sleeping, 0 stopped, 0 zombie %Cpu(s): 35.2 us, 5.1 sy, 0.0 ni, 58.5 id, 1.0 wa, 0.0 hi, 0.2 si MiB Mem: 16384.0 total, 8200.0 free, 5100.0 used, 3084.0 buff/cache MiB Swap: 4096.0 total, 4096.0 free, 0.0 used. 10500.0 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND 12345 robot 20 0 524288 192000 45000 S 85.2 2.3 12:45 robot_node 12400 robot 20 0 312000 65000 32000 S 0.5 0.8 0:30 robot_state_pub第一行是系统运行时间和负载。load average三个数字分别是1分钟、5分钟、15分钟的平均负载。如果持续高于CPU核心数说明系统过载了。在top界面里按P按CPU排序按M按内存排序按k可以直接输入PID来杀进程按q退出。还有个更现代的工具叫htop彩色界面支持鼠标可以展开看线程。安装sudo apt install htop。做机器人开发的建议装一个。kill终止进程找到问题进程后你需要终止它。kill命令发信号给进程。最常用的kill 12345 # 发SIGTERM优雅终止 kill -9 12345 # 发SIGKILL强制杀死 kill -15 12345 # 和kill 12345一样SIGTERM和SIGKILL的区别是面试常考题。SIGTERM允许进程做清理工作关闭文件、释放内存进程可以捕获并忽略它。SIGKILL不能被捕获内核直接回收资源可能导致数据丢失。最佳实践先kill PIDSIGTERM等几秒如果进程还在再kill -9 PID。还有个killall命令按名字杀进程killall robot_node。把所有叫这个名字的进程全干掉。用的时候小心。机器人开发中的进程管理ROS2的节点本质上就是进程。一个机器人系统通常跑着几十个节点激光雷达驱动、IMU驱动、导航、规划、控制……每个都是独立进程。当你的机器人卡了第一步就是htop看哪个进程吃CPU。常见情况某个节点的回调函数里有死循环CPU飙到100%。用top定位PID然后kill -9杀掉重启那个节点。内存泄漏导致RSS不断增长。你可以写个脚本定期记录RSSwhile true; do ps -p 12345 -o rss memory_log.txt sleep 10 done如果RSS持续上涨不回落基本确认内存泄漏。接下来用valgrind或AddressSanitizer定位具体位置。僵尸进程在机器人系统里偶尔会出现。通常是因为你用system()或fork()启动了子进程但没等待它结束。ps aux看到STAT为Z的进程就是。解决方法是修复父进程的wait逻辑。进程优先级机器人系统里有些任务比另一些更关键。实时控制环路不能被日志写入抢CPU。nice命令调整优先级nice -n -10 ./realtime_controller # 高优先级-20到19越小越高 nice -n 10 ./log_writer # 低优先级注意普通用户只能调高nice值降低优先级降低nice值提高优先级需要root。更底层的方案是chrt设置实时调度策略sudo chrt -r 99 ./realtime_controller这会让进程使用SCHED_RR实时调度。但别滥用——实时进程如果死循环整个系统都会卡死。面试常见考点进程和线程的区别——进程有独立内存空间线程共享进程内存。ROS2默认每个节点一个进程节点内的回调在同一进程的线程中执行。什么是僵尸进程怎么避免——子进程退出后父进程没调用wait回收就变僵尸。避免方法fork后调用wait/waitpid或者忽略SIGCHLD信号。怎么查看某个进程的详细信息——cat /proc/PID/status看状态cat /proc/PID/maps看内存映射ls -l /proc/PID/fd看打开的文件描述符。/proc是内核提供的进程信息接口。top里的load average怎么看——三个值是1/5/15分钟的平均 runnable 任务数。持续高于CPU核心数说明过载。4核机器load average到8就该排查了。进程管理的实战技巧在机器人项目中经常需要同时运行多个进程传感器驱动、定位算法、路径规划等。用ps aux加grep可以快速查找特定进程htop比top更直观。一个实用技巧是用nohup或screen让进程在断开SSH后继续运行。还有kill -15优雅退出和kill -9强制杀死的区别面试时经常被问到这个知识点。补充一个实用命令lsof -i :端口号 可以查看哪个进程占用了特定端口在排查端口冲突时非常有用。另外fuser命令也有类似功能。在面试中展示你对Linux进程管理的系统理解会让面试官对你的工程能力更有信心。给你的建议把htop装起来日常开发就看着它。养成习惯启动机器人程序前先看看系统负载跑完之后确认所有进程都正常退出了。写个简单的监控脚本定期检查关键进程的存活状态。生产环境的机器人必须有这个——你不可能24小时盯着屏幕看进程是不是还活着。面试的时候进程管理这块不要只背命令。面试官想听的是你怎么用这些工具解决实际问题。准备一两个我的机器人程序出了XX问题我用XX命令定位并解决的故事比背十条命令有用。上一篇第83篇 Linux权限管理——chmod/chown和机器人设备的权限配置下一篇预告第85篇 Linux网络配置——IP/DNS/防火墙和机器人联网调试

相关新闻

提升数据科学效率的6个关键工作习惯

提升数据科学效率的6个关键工作习惯

1. 数据科学工作流中的痛点与效率瓶颈数据科学项目往往涉及复杂的多环节协作,从数据清洗、特征工程到模型训练与结果可视化,每个步骤都可能成为效率黑洞。我见过太多团队在以下场景中浪费大量时间:环境配置问题导致同一份代码在不同机器上运行…

2026/10/14 0:57:35 阅读更多 →
OpenOnload用户级网络栈:绕过内核瓶颈的终极网络加速方案

OpenOnload用户级网络栈:绕过内核瓶颈的终极网络加速方案

OpenOnload用户级网络栈:绕过内核瓶颈的终极网络加速方案 【免费下载链接】onload OpenOnload high performance user-level network stack 项目地址: https://gitcode.com/gh_mirrors/on/onload 在当今高性能计算、金融交易和实时通信领域,网络延…

2026/10/14 6:40:24 阅读更多 →
AI赋能:从工具到伙伴的认知升级与实践框架

AI赋能:从工具到伙伴的认知升级与实践框架

1. 从工具到伙伴:AI赋能的本质认知升级第一次接触AI工具时,我和大多数人一样,把它当作一个更聪明的搜索引擎。直到ChatGPT帮我重构了三个月都没解决的代码问题,才意识到真正的AI赋能不是简单的问答交互,而是建立一种新…

2026/10/9 6:26:27 阅读更多 →

最新新闻

纯Python实现猜数字游戏:从零到避坑的完整指南

纯Python实现猜数字游戏:从零到避坑的完整指南

猜数字游戏大概是很多人的第一个编程项目。它不像计算器那样枯燥,也不需要复杂的界面,但一套完整流程走下来,变量、输入输出、条件判断、循环、异常处理这些编程入门核心概念全部能练到。我最近又把这个小项目从头写了一遍,用最基…

2026/10/14 6:39:29 阅读更多 →
Vibe Coding工具链选型四步框架:效率提升27%与成本控制24倍

Vibe Coding工具链选型四步框架:效率提升27%与成本控制24倍

1. 效率提升27%背后的真实账本先把结论摆出来:同样一个中等复杂度的业务模块,用对工具链和用错工具链,交付效率差距能拉到27%左右,而综合成本差距可以到24倍。这个数字不是拍脑袋来的,是我在三个不同类型的项目里反复测…

2026/10/14 6:39:29 阅读更多 →
两个模型同价,真正拉开成本的是那个默认值

两个模型同价,真正拉开成本的是那个默认值

📋 目录 一、两个模型,一个价二、纠错一:跑量模型不等于更便宜三、纠错二:贵的是 quality,而且它默认不贵四、逐档成本表,和一个反直觉的发现五、纠错三:分辨率不是按像素收费六、参考图才是隐…

2026/10/14 6:39:29 阅读更多 →
Vibe Coding工具选型与四步实施框架:效率提升27%与成本差24倍背后的工程实践

Vibe Coding工具选型与四步实施框架:效率提升27%与成本差24倍背后的工程实践

1. 效率数字背后的真实账本先把标题里两个数字拆开看。效率提升27%这个量级,放在任何研发团队里都算得上可观,但它不是凭空冒出来的——它通常来自编码环节中重复劳动被压缩、上下文切换次数减少、以及试错周期缩短这三块的叠加。而成本差24倍这个说法&a…

2026/10/14 6:39:29 阅读更多 →
新手入门3D视觉(一)WSL2+Ubuntu22.04+PCL环境配置

新手入门3D视觉(一)WSL2+Ubuntu22.04+PCL环境配置

「零基础转行工业 3D 视觉」系列第一篇。 本文记录我用 WorkBuddy 把第 1 周环境搭起来的完整过程:3 个步骤,手动敲的命令不超过 3 条。 全程用到的 3 个脚本放在文末附件里,可以直接下载复用。开始之前:一条最重要的提醒不要装 V…

2026/10/14 6:39:29 阅读更多 →
深度学习损失函数选型实战:从MSE到Focal Loss的原理与踩坑

深度学习损失函数选型实战:从MSE到Focal Loss的原理与踩坑

损失函数这玩意儿,说起来是深度学习里最基础的组件之一,但恰恰是很多同学在实战里翻车最频繁的地方。我带项目的时候经常看到有人模型结构抄得挺像样,学习率调度也配了一堆,可训练出来的结果就是不对,Loss 曲线跟心电图…

2026/10/14 6:38:29 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

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

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

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

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

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

2026/10/12 18:11:17 阅读更多 →