systemd服务管理——让机器人程序开机自启
面试翻车现场面试过一个做机器人项目的候选人我问他你的机器人程序怎么实现开机自启他说在rc.local里加一行。我问如果程序崩溃了怎么自动重启他说写个脚本定期检查挂了就重新启动。我又问如果程序启动失败怎么收集日志排查问题他沉默了。rc.local是十年前的做法了。现代Linux系统用systemd管理服务功能强大得多。做机器人开发你的程序需要在机器人开机时自动启动、崩溃后自动重启、日志自动记录——这些systemd都能帮你搞定。systemd是什么systemd是Linux的系统和服务管理器。它是系统启动后运行的第一个进程PID 1负责启动和管理其他所有服务。Ubuntu 16.04之后默认使用systemd。你用的ROS2、Docker、SSH背后都是systemd在管理。基本命令systemctl status ssh # 查看服务状态 systemctl start ssh # 启动服务 systemctl stop ssh # 停止服务 systemctl restart ssh # 重启服务 systemctl enable ssh # 设置开机自启 systemctl disable ssh # 取消开机自启查看系统上所有服务systemctl list-units --typeservice # 列出所有正在运行的服务 systemctl list-unit-files --typeservice # 列出所有已安装的服务创建自定义服务让你的机器人程序开机自启需要创建一个service文件。sudo vim /etc/systemd/system/robot-node.service写入以下内容[Unit] DescriptionRobot Navigation Node Afternetwork.target [Service] Typesimple Userrobot WorkingDirectory/home/robot/robot_ws ExecStart/bin/bash -c source /opt/ros/humble/setup.bash source /home/robot/robot_ws/install/setup.bash ros2 run nav2_node nav2_node Restartalways RestartSec5 EnvironmentROS_DOMAIN_ID0 [Install] WantedBymulti-user.target各部分含义[Unit]服务的元数据和依赖关系。Afternetwork.target表示在网络就绪后启动。[Service]服务的具体配置。Typesimple表示主进程就是服务进程Userrobot指定运行用户ExecStart是启动命令Restartalways表示崩溃后自动重启RestartSec5表示重启前等待5秒。[Install]安装配置。WantedBymulti-user.target表示在多用户模式正常启动时启动。创建完后启用并启动服务sudo systemctl daemon-reload # 重新加载配置 sudo systemctl enable robot-node # 设置开机自启 sudo systemctl start robot-node # 立即启动 sudo systemctl status robot-node # 查看状态日志管理systemd自动收集服务的标准输出和标准错误用journalctl查看journalctl -u robot-node # 查看服务日志 journalctl -u robot-node -f # 实时跟踪日志 journalctl -u robot-node --since today # 查看今天的日志 journalctl -u robot-node -n 50 # 查看最后50行日志默认存储在/var/log/journal/目录下。如果日志太多占用磁盘空间可以配置日志轮转sudo vim /etc/systemd/journald.conf[Journal] SystemMaxUse500M # 日志最大占用500MB SystemMaxFileSize50M # 单个日志文件最大50MB MaxRetentionSec7day # 保留7天修改后重启journaldsudo systemctl restart systemd-journald和机器人开发的关系systemd在机器人开发中非常实用。几个典型场景机器人主控程序开机自启机器人上电后自动启动导航、感知等核心节点不需要人工干预。崩溃自动重启Restartalways确保程序崩溃后自动恢复提高系统可靠性。依赖管理Afternetwork.target确保网络就绪后再启动需要网络的节点。还可以用Requires声明硬性依赖。日志集中管理所有服务的日志统一用journalctl查看不用自己写日志系统。资源限制可以限制服务的CPU、内存使用[Service] CPUQuota50% # 最多使用50%的CPU MemoryMax1G # 最多使用1GB内存面试常见考点systemd和init有什么区别——systemd是现代Linux的初始化系统支持并行启动、服务依赖管理、日志收集等功能传统的SysVinit是串行启动功能简单。怎么让一个程序开机自启——创建systemd service文件配置ExecStart然后systemctl enable。服务启动失败怎么排查——用systemctl status查看状态和错误信息用journalctl -u查看详细日志。常见原因路径错误、权限不足、依赖服务未启动。Restartalways和Restarton-failure的区别——always无论什么原因退出都重启on-failure只在非正常退出退出码非0时重启。给你的建议systemd是Linux系统管理的核心工具做机器人开发必须掌握。把机器人的核心程序都配置成systemd服务实现开机自启和崩溃自动重启。这比写脚本定期检查靠谱得多。日志用journalctl查看不要自己写日志系统。systemd已经帮你做好了日志收集、轮转、持久化。遇到问题先看systemctl status和journalctl90%的问题都能从日志里找到答案。调试服务时可以临时把Restartno这样程序崩溃后不会自动重启方便你用gdbattach上去调试。调试完再改回Restartalways。systemd服务的编写实战在机器人项目中经常需要把某些程序设置为开机自启动比如传感器驱动或通信中间件。systemd的service文件写法其实不复杂关键是几个字段[Unit]定义依赖关系[Service]定义启动命令和重启策略[Install]定义安装方式。一个实用的模板是设置Restartalways和RestartSec5这样进程崩溃后会自动重启。面试时如果能写出一个完整的service文件会很有说服力。systemd timer替代cron的现代方案systemd不仅能管理长期运行的服务还能替代cron做定时任务。systemd timer比cron更强大——支持精确到秒的调度、可以和service联动、日志统一走journalctl。比如每小时清理机器人日志创建一个oneshot service配合timer文件就行用OnCalendarhourly设置调度Persistenttrue确保错过的任务在重启后补执行。用systemctl list-timers查看所有活跃的定时器。上一篇第92篇 环境变量与路径——ROS2开发中必须搞懂的基础概念下一篇预告第94篇 cron定时任务——机器人日志清理和数据定期备份

相关新闻

TVA驱动的具身智能迭代逻辑(系列)

TVA驱动的具身智能迭代逻辑(系列)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/7/23 21:47:03 阅读更多 →
探秘人工操作实现谷歌自然排名的企业究竟啥样?

探秘人工操作实现谷歌自然排名的企业究竟啥样?

在当今数字化时代,谷歌自然排名对于企业的网络营销至关重要。为了深入了解那些通过人工操作实现谷歌自然排名的企业,我们进行了一番探索。人工操作谷歌自然排名的行业现状行业报告显示,约 63%的新手独立站因前期规划不足,在上线后…

2026/7/23 21:47:03 阅读更多 →
Dify 控制台提示“通义千问/Qwen/DeepSeek 等模型供应商无法更新

Dify 控制台提示“通义千问/Qwen/DeepSeek 等模型供应商无法更新

Dify Plugin Daemon 升级修复手册适用场景:Dify 控制台提示"通义千问/Qwen/DeepSeek 等模型供应商无法更新"或出现 ValidationError: PluginInstallTask 错误一、问题诊断(确认是否为本案例)1.1 SSH 登录服务器1.2 检查错误日志# 查…

2026/7/23 21:47:03 阅读更多 →

最新新闻

TVA驱动的具身智能迭代逻辑(9)

TVA驱动的具身智能迭代逻辑(9)

前沿技术探索:AI智能体视觉(TVA,Transformer-based Vision Agent)是依托Transformer架构与“因式智能体”理论所构建的颠覆性工业视觉技术,是集深度强化学习(DRL)、卷积神经网络(CNN…

2026/7/23 21:55:07 阅读更多 →
Kamailio 关于 mhomed 的讨论之续集

Kamailio 关于 mhomed 的讨论之续集

笔记问AI,源码是怎样实现的,下面是回答: 可以,从 Kamailio 源码里能找到这套逻辑。重点是:Kamailio 并不是自己解析 /proc/net/route 或 netlink 去读操作系统路由表,而是通过 socket API 让内核做一次路由…

2026/7/23 21:55:07 阅读更多 →
【我的第一篇博客】

【我的第一篇博客】

我是一名四川轻化工大学物联网工程专业的学生,我目前大三,感觉没学到什么东西。我知道这是我自己的原因,所以我想做出改变,我报名了鹏哥训练营,希望能有收获。我的学习目标是:能看懂代码,会写一些代码。怎么…

2026/7/23 21:55:07 阅读更多 →
网安必备的基础小知识

网安必备的基础小知识

一、网络 这里显示的有四个网络: 1.以太网:自己电脑的真是网线网卡,负责电脑正常的上网 2.VMnet1(仅主机):只让你的电脑和虚拟机相互通信,虚拟机不上网 3.VMnet8(NAT)…

2026/7/23 21:55:07 阅读更多 →
个人笔记:实用机器学习(b站李沐)

个人笔记:实用机器学习(b站李沐)

1.1课程介绍 背景:机器学习已经从少数科技巨头的"玩具"变成了各行各业驱动商业营收的核心工具,而新冠疫情进一步加速了这一商业化进程。五大行业典型的ML的应用: 制造业(Manufacturing):预测性维护、质量控制零售业 (Re…

2026/7/23 21:55:07 阅读更多 →
【Springboot毕设全套源码+文档】基于springboot林业资源管理系统设计与实现(丰富项目+远程调试+讲解+定制)

【Springboot毕设全套源码+文档】基于springboot林业资源管理系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026/7/23 21:54:07 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/23 17:49:47 阅读更多 →

月新闻