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

如何用单个Shell脚本防止树莓派上多个Python脚本崩溃?

用单个Shell脚本监控多个Python脚本的方案

当然可以用同一个Shell脚本搞定两个Python脚本的监控,完全不用新建第二份脚本!下面给你两种实用的修改方案,选哪种都能达到目的:

方案一:封装监控逻辑为函数(推荐)

把检查单个Python脚本是否运行、崩溃后重启的逻辑做成一个可复用的函数,之后只要传入不同脚本的路径和标识名就能分别监控,代码更整洁,后续再加更多脚本也方便扩展。

示例脚本如下:

#!/bin/bash

# 定义通用监控函数:
# 参数1:要监控的Python脚本绝对路径
# 参数2:脚本的标识名(用来区分日志里的不同脚本)
monitor_python() {
    target_script="$1"
    script_alias="$2"
    
    # 通过脚本路径精确匹配进程,避免误判同名进程
    if ! pgrep -f "$target_script" > /dev/null; then
        # 记录重启日志,方便排查问题
        echo "$(date '+%Y-%m-%d %H:%M:%S'): $script_alias 已崩溃,正在重启..." >> /var/log/python_script_monitor.log
        # 后台启动脚本,并把输出日志单独保存(可选,方便排查脚本崩溃原因)
        python3 "$target_script" >> "/var/log/${script_alias}_runtime.log" 2>&1 &
    fi
}

# 调用函数监控第一个Python脚本
monitor_python "/home/pi/your_scripts/first_script.py" "FirstScript"

# 调用函数监控第二个Python脚本
monitor_python "/home/pi/your_scripts/second_script.py" "SecondScript"

方案二:直接写重复检查逻辑

如果觉得函数太麻烦,也可以直接在脚本里写两段独立的检查重启代码,逻辑简单直接,适合新手快速上手:

#!/bin/bash

# 监控第一个Python脚本
first_script="/home/pi/your_scripts/first_script.py"
if ! pgrep -f "$first_script" > /dev/null; then
    echo "$(date '+%Y-%m-%d %H:%M:%S'): 第一个脚本已崩溃,正在重启..." >> /var/log/python_script_monitor.log
    python3 "$first_script" >> /var/log/first_script_runtime.log 2>&1 &
fi

# 监控第二个Python脚本
second_script="/home/pi/your_scripts/second_script.py"
if ! pgrep -f "$second_script" > /dev/null; then
    echo "$(date '+%Y-%m-%d %H:%M:%S'): 第二个脚本已崩溃,正在重启..." >> /var/log/python_script_monitor.log
    python3 "$second_script" >> /var/log/second_script_runtime.log 2>&1 &
fi

额外注意事项

  1. 给Shell脚本加执行权限:运行chmod +x /home/pi/your_scripts/monitor.sh(替换成你的脚本路径),确保cron能正常执行它。
  2. 设置cron定时检测:编辑cron任务(crontab -e),添加一行比如*/5 * * * * /home/pi/your_scripts/monitor.sh,意思是每隔5分钟运行一次监控脚本,及时发现崩溃并重启。
  3. 日志管理:可以定期清理日志文件,避免占满存储空间,比如用Linux自带的logrotate工具配置自动轮转日志。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:33:29