コンテナ内からプロセスを自動起動
WebUI やスクリプトからバックグラウンドのコマンド(claude 等)を起動するときの罠(task-launcher で確立)。
subprocess.Popenを使う(runでない):subprocess.runはブロックするので Streamlit 等の UI が フリーズする。Popenでノンブロッキング起動。- 非対話シェルではエイリアスが効かない:
alias claude='claude --dangerously-skip-permissions'は ログインシェルの便宜。bash -c経由の自動起動では無効なので、フラグを明示して直に叩く (claude --dangerously-skip-permissions -p '...')。 - シェルの堅牢化:
mkdir -p .../logsを先頭に(未存在でのリダイレクト失敗防止)/ログパスは ダブルクォートで囲む(スペース対策)/ファイル名不可文字(/空白)は_に置換。 - 形:
nohup bash -c "cd {proj} && claude ... -p '{prompt}'" > "{logpath}" 2>&1 &
出典:task-launcher(task-launcher/CLAUDE.md Phase 2–3)