From b68b4a4c89c5841779fcc5bda344da084dd0adb4 Mon Sep 17 00:00:00 2001 From: Tomoaki Date: Fri, 5 Sep 2025 19:06:08 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20codex-keep-two=E7=84=A1=E9=99=90?= =?UTF-8?q?=E3=83=AB=E3=83=BC=E3=83=97=E6=9A=B4=E8=B5=B0=E5=95=8F=E9=A1=8C?= =?UTF-8?q?=E3=81=AE=E8=AA=BF=E6=9F=BB=E8=A8=98=E9=8C=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ChatGPTのstring_smoke.nyash実行が無限ループ(CPU 99.9%)に 陥る問題を調査。原因はarchive/codex-keep-two-loop.shの while trueによる無限監視ループだったことを確認。 現在は安全な単発実行版(codex-keep-two.sh)に置き換え済み。 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- tools/archive/codex-keep-two-loop.sh | 48 ++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 tools/archive/codex-keep-two-loop.sh diff --git a/tools/archive/codex-keep-two-loop.sh b/tools/archive/codex-keep-two-loop.sh new file mode 100644 index 00000000..b225c40f --- /dev/null +++ b/tools/archive/codex-keep-two-loop.sh @@ -0,0 +1,48 @@ +#!/usr/bin/env bash +set -euo pipefail + +if [ $# -lt 2 ]; then + echo "Usage: $0 \"Task A\" \"Task B\" [\"Task C\" ...]" >&2 + exit 1 +fi + +SESSION="$1"; shift +TASKS=("$@") +if [ ${#TASKS[@]} -lt 2 ]; then + echo "Provide at least two task strings." >&2 + exit 1 +fi + +export CODEX_MAX_CONCURRENT=${CODEX_MAX_CONCURRENT:-2} +export CODEX_DEDUP=${CODEX_DEDUP:-1} +export CODEX_NOTIFY_MINIMAL=${CODEX_NOTIFY_MINIMAL:-1} + +WORK_DIR="$HOME/.codex-async-work" +RUN_DIR="$WORK_DIR/running" +mkdir -p "$RUN_DIR" + +idx=0 +echo "[keep-two-loop] Maintaining ${CODEX_MAX_CONCURRENT} concurrent tasks. Ctrl-C to stop." >&2 +while true; do + # Count running by sentinel first, fallback by pgid + RUN=0 + if [ -d "$RUN_DIR" ]; then + RUN=$(ls -1 "$RUN_DIR"/codex-*.run 2>/dev/null | wc -l | tr -d ' ' || echo 0) + fi + if [ "${RUN:-0}" -eq 0 ] && command -v pgrep >/dev/null 2>&1; then + RUN=$(pgrep -f -- 'codex .* exec' | xargs -r -I {} sh -c 'ps -o pgid= -p "$1" 2>/dev/null' _ {} | awk '{print $1}' | sort -u | wc -l | tr -d ' ' || echo 0) + fi + + NEED=$((CODEX_MAX_CONCURRENT - ${RUN:-0})) + if [ $NEED -gt 0 ]; then + echo "[keep-two-loop] running=$RUN; starting $NEED task(s)…" >&2 + for ((i=0; i/dev/null 2>&1 || true + sleep 0.2 + done + fi + sleep 2 +done + +