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

树莓派4开机/重启自动运行Python脚本问题求助

解决树莓派4 Flask API开机自启问题

先排查crontab失效的核心原因

crontab的执行环境和你登录PuTTY后的环境完全不同——它不会加载用户的环境变量,默认工作目录是根目录,甚至可能找不到正确的python3路径。你之前的配置没考虑这些细节,导致脚本启动失败。

修复crontab配置的步骤

  1. 确认python3的绝对路径
    在PuTTY里执行:

    which python3
    

    得到类似/usr/bin/python3的路径,后续所有配置都要用这个绝对路径,别直接写python3。

  2. 给crontab加日志输出(关键排查步骤)
    编辑root权限的crontab(sudo crontab -e),替换原来的配置行:

    @reboot cd /home/apiadmin/Deploy && /usr/bin/python3 API.py >> /home/apiadmin/api_startup.log 2>&1 &
    
    • cd /home/apiadmin/Deploy:确保脚本在正确的工作目录运行,避免找不到JSON数据库等依赖文件
    • >> /home/apiadmin/api_startup.log 2>&1:把脚本的输出和错误信息都写入日志,重启后查看日志就能定位问题
  3. 重启后验证
    重启树莓派后执行cat /home/apiadmin/api_startup.log,如果有错误提示,根据信息修复(比如缺少依赖、文件权限不足等)。

更可靠的方案:用systemd服务(推荐)

crontab适合简单脚本,长期运行的API用systemd更稳定,还能自动重启崩溃的进程:

  1. 创建systemd服务文件
    编辑/etc/systemd/system/flask-api.service:

    [Unit]
    Description=Flask API Service
    After=network.target  # 确保网络服务启动后再运行API
    
    [Service]
    User=apiadmin
    WorkingDirectory=/home/apiadmin/Deploy  # 脚本所在的目录
    ExecStart=/usr/bin/python3 API.py  # 用之前查到的python3绝对路径
    Restart=always  # 进程崩溃时自动重启
    
    [Install]
    WantedBy=multi-user.target
    
  2. 启用并启动服务
    执行以下命令:

    sudo systemctl daemon-reload
    sudo systemctl enable flask-api.service  # 设置开机自启
    sudo systemctl start flask-api.service  # 立即启动服务
    
  3. 检查服务状态

    sudo systemctl status flask-api.service
    

    如果显示active (running),说明服务正常运行;如果有错误,直接看状态信息排查即可。

关于之前launcher.sh的问题

你遇到的"无法进入指定目录"大概率是脚本里用了相对路径,或者没有写全cd的绝对路径。但systemd方案已经解决了工作目录和环境依赖问题,没必要再纠结shell脚本的写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 04:32:21