You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

树莓派4配置开机自启可执行文件后出现重复同名进程该如何解决

树莓派4自启程序重复进程问题解决方法

核心原因梳理

  • 多套自启规则共存:之前配置的systemd、rc.local规则没有完全清理,两套规则同时生效各自拉起一次进程
  • 脚本无单实例限制:自启脚本没有防重复运行逻辑,异常触发时会生成多个实例
  • 进程父子关系误判:你看到的两个进程实际是执行死循环的bash父进程 + sudo拉起的vehicle_sep子进程,属于正常关联进程,并非重复启动,可通过ps -ef | grep vehicle_sep查看PPID确认父子关系

修复操作步骤

1. 清理冗余自启配置

保留一种自启方式即可,建议优先用systemd,清理多余规则:

  • 打开/etc/rc.local文件,删除你之前添加的脚本启动命令,保存退出
  • 执行systemctl list-unit-files | grep enabled查找你自行添加的自启service,执行sudo systemctl disable 旧服务名.service禁用冗余服务
  • 执行sudo reboot重启后先确认进程数是否恢复正常

2. 优化自启逻辑(可选,适配需要用bash脚本托管的场景)

如果需要用bash脚本做进程拉起,给脚本加单实例文件锁,避免重复运行:

#!/bin/bash
# 定义锁文件路径
LOCK_PATH="/var/run/vehicle_sep.lock"
# 创建文件锁,重复启动时直接退出
exec 9>"$LOCK_PATH"
if ! flock -n 9; then
    exit 1
fi

while true
do
    # 若自启配置已指定运行用户为root,无需额外加sudo
    /home/pi/RP_code/vehicle_sep
    # 程序崩溃后等待1秒再重启,避免资源耗尽
    sleep 1
done

修改完成后给脚本赋予执行权限:chmod +x /home/pi/你的脚本路径.sh

3. 配置systemd单实例自启(推荐)

直接用systemd托管进程,无需额外写bash脚本,只会生成一个运行进程:
新建service文件/etc/systemd/system/vehicle_sep.service,内容如下:

[Unit]
Description=Vehicle separation service
After=network.target

[Service]
Type=simple
User=root
ExecStart=/home/pi/RP_code/vehicle_sep
# 程序异常退出时自动重启
Restart=always
RestartSec=1

[Install]
WantedBy=multi-user.target

执行以下命令生效配置:

  • sudo systemctl daemon-reload
  • sudo systemctl enable vehicle_sep.service
  • sudo systemctl start vehicle_sep.service

4. 验证运行状态

执行ps -ef | grep vehicle_sep查看进程,正常仅会显示一个vehicle_sep运行进程,无重复实例。


内容的提问来源于stack exchange,提问作者Yashvant

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 15:06:00