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

如何在Bash监控脚本中添加myscript特定输出触发重启逻辑?

监控并重启myscript的改进方案

修改后的脚本

while true; do
    # 启动myscript,合并标准错误到标准输出,同时监控输出内容
    myscript 2>&1 | (
        # 逐行读取输出,匹配到指定内容就终止进程
        while IFS= read -r line; do
            if [[ "$line" == *"closed connection"* ]]; then
                kill $MYSCRIPT_PID
                break
            fi
        done
    ) &
    # 记录myscript的进程ID
    MYSCRIPT_PID=$!

    # 等待进程结束,获取退出码
    wait $MYSCRIPT_PID
    rc=$?

    # 输出重启提示,保留原有逻辑
    echo "'myscript' crashed with exit code $rc. Restarting..." >&2
    sleep 1
done

核心改动说明

  • 捕获所有输出:用2>&1将myscript的标准错误合并到标准输出,避免遗漏任何打印内容
  • 实时监控输出:通过子shell逐行读取myscript的输出,一旦检测到包含closed connection的行,立即用kill终止myscript进程
  • 跟踪进程ID:用$!获取刚启动的myscript后台进程ID,确保能精准终止目标进程
  • 保留原有逻辑:myscript崩溃退出时,依然会获取退出码并执行重启流程,不影响原有错误场景的处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 23:02:12