
Rpisurv部署运维systemd开机自启与崩溃自动恢复【免费下载链接】rpisurvRaspberry Pi surveillance项目地址: https://gitcode.com/gh_mirrors/rp/rpisurvRaspberry Pi 监控系统 Rpisurv 是专为树莓派打造的监控大屏方案可把树莓派变成一台持续显示多路视频流的专用设备。对无人值守的监控场景而言systemd 开机自启与崩溃自动恢复是运维的两大命脉断电重启后能否自动拉起画面、视频流中断后能否自动恢复直接决定监控系统的可用性。本文将完整拆解 Rpisurv 的 systemd 服务配置、开机自启原理与多层自愈机制帮你打造一台 7×24 小时不掉线的监控终端。为什么监控系统必须配置开机自启与崩溃自动恢复监控大屏通常部署在仓库、车间、门店等无人值守环境一次断电、一次进程崩溃如果没人手动处理监控画面就可能持续黑屏数小时甚至数天。Rpisurv 从设计之初就考虑了这一痛点在安装脚本与核心代码中内置了三层保障保障层级机制作用第一层systemd 服务开机自启 进程崩溃自动拉起第二层流看门狗单个视频流被杀后自动重启第三层连接探测摄像头断连/恢复后自动重排画面三层机制相互配合让整台树莓派监控屏具备自我愈合能力。一键安装install.sh 自动完成 systemd 开机自启配置Rpisurv 的安装脚本 install.sh 已经内置了完整的 systemd 配置逻辑无需手动编写服务文件。核心流程如下检测初始化系统脚本会自动判断树莓派运行的是 systemd 还是旧版 SysVinit从而选择不同的自启方案部署服务文件将仓库根目录的 rpisurv.service 复制到/etc/systemd/system/并设置 700 权限注册开机自启执行systemctl daemon-reload与systemctl enable rpisurv让服务随系统启动配置软链接将配置目录链接到/etc/rpisurv方便统一管理可选立即启动安装时询问是否立刻重启服务选yes即可马上看到监控画面部署完成后验证开机自启是否生效只需一条命令systemctl is-enabled rpisurv输出enabled即代表已成功注册为开机自启服务。✅深入解析 rpisurv.servicesystemd 服务文件逐行拆解如果你想手动配置或调整自启行为rpisurv.service 就是核心文件其内容非常精炼但信息量十足[Unit] DescriptionRpisurv Raspberry Pi Surveillance Afternetwork-online.target Wantsnetwork-online.target [Service] Typesimple ExecStart/usr/bin/rpisurv KillModecontrol-group Restarton-failure RestartSec20 [Install] WantedBymulti-user.target各字段的运维含义如下After / Wantsnetwork-online.target确保网络就绪后再启动服务。监控流依赖网络这一配置避免了开机时因网卡未初始化导致所有摄像头连接失败Typesimple声明主进程是常驻型进程systemd 不会等待其 fork 子进程ExecStart/usr/bin/rpisurv启动入口。该脚本由安装器从仓库复制而来内部执行cd /usr/local/bin/rpisurv; python3 surveillance.py即启动 surveillance.py 主程序KillModecontrol-group停止服务时会连同整个进程组包括所有视频流子进程一起终止避免残留进程占用画面Restarton-failure核心的自愈配置进程异常退出非正常 exit 0时 systemd 自动重启服务RestartSec20崩溃后等待 20 秒再拉起给系统留出恢复资源的时间防止快速循环重启WantedBymulti-user.target将服务挂到多用户运行级别这是树莓派默认的启动目标调优建议如果希望任何退出包括正常退出都自动重启可把Restart改为always如果监控画面重启过快导致循环崩溃可适当增大RestartSec。看门狗机制流级崩溃自动恢复的秘密武器systemd 只负责守护主进程而真正保证画面不黑的是 Rpisurv 内置的流看门狗。其核心逻辑位于 worker.py每个视频流都由一个独立的 worker 进程托管执行一个永不结束的守护循环每个视频流通过cvlc子进程播放看门狗循环以 0.1 秒间隔轮询子进程状态一旦检测到cvlc进程退出proc.poll() ! None立即重新拉起子进程重启后等待 10 秒再继续监控最多尝试100000 次重启这意味着即使某个摄像头流因网络抖动、解码崩溃而中断看门狗也会在十几秒内自动恢复该流全程无需人工干预。如上图所示当某个屏幕的所有视频流都不可连接时Rpisurv 会显示提示画面同时后台持续探测并在可连接后自动重排画面布局——这正是第三层保障的工作方式。连接探测与自动布局第三层自愈保障在 surveillance.py 的主循环中Rpisurv 默认每19 秒interval_check_status可在 general.yml 中调整检查一次当前屏幕所有视频流的连接状态某路摄像头断连 → 从屏幕布局中移除剩余画面自动重新排列占满整个屏幕某路摄像头恢复 → 自动加回布局画面重新铺开多屏轮播场景下每个屏幕独立执行探测配合 display1.yml 与 display2.yml 中按屏幕定义的流列表Rpisurv 可以在完全无人值守的情况下动态维护画面布局实现越用越稳的监控体验。运维实战常用 systemctl 命令速查掌握了开机自启机制后日常运维就变得非常简单。以下是 Rpisurv 部署运维中最常用的 systemctl 命令操作命令说明查看服务状态systemctl status rpisurv显示运行状态、最近日志、进程 PID停止监控屏systemctl stop rpisurv停止服务并关闭所有视频流启动监控屏systemctl start rpisurv手动拉起服务重启服务systemctl restart rpisurv修改配置后最常用的操作禁用开机自启systemctl disable rpisurv临时取消自启查看自启状态systemctl is-enabled rpisurv确认开机自启是否生效修改配置后的标准流程编辑/etc/rpisurv/下的 YAML 配置 → 执行systemctl restart rpisurv→ 用systemctl status rpisurv确认状态。整个过程无需重启树莓派非常适合远程运维。日志排查崩溃恢复的体检报告当怀疑有视频流频繁崩溃时日志是最佳诊断工具。Rpisurv 的日志配置位于 logging.yml默认输出到/usr/local/bin/rpisurv/logs/目录main.log主进程日志记录服务生命周期、屏幕切换、内存检查等每个流独立的日志文件按流名称命名记录该流的重启尝试次数日志采用轮转策略单文件上限 1MB保留 10 个备份长期运行也不会撑爆 SD 卡。排查步骤建议如下journalctl -u rpisurv -f实时查看 systemd 层日志tail -f /usr/local/bin/rpisurv/logs/main.log观察主进程状态若某个流频繁出现 Trying to restart重点检查该摄像头的网络稳定性或调整 display1.yml 中的probe_timeout与network_caching_ms参数结语通过 systemd 开机自启 流级看门狗 连接探测三层机制Rpisurv 让树莓派监控系统真正做到装上就不管。无论断电重启还是视频流崩溃系统都能自动恢复到正常监控状态这正是它适合无人值守场景的最大价值。掌握本文的配置与运维技巧你就能轻松搭建一台 7×24 小时稳定运行的 Raspberry Pi 监控大屏【免费下载链接】rpisurvRaspberry Pi surveillance项目地址: https://gitcode.com/gh_mirrors/rp/rpisurv创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考