テクノロジー · 実用ガイド

curl エラー23?ファイル・パイプ・ラッパーのどこが出力を拒否したか確認する

「Failure writing output to destination」はローカル書き込み失敗であり、サーバーやネットワーク障害の証明ではない。コマンドと終了状態を保存し、ファイル出力とパイプを分離して原因だけを直す。

Original technical diagram separating curl exit 23 evidence into file, pipeline and wrapper checks.
オリジナルイラスト:権限変更や再インストールの前に書き込み先を分離します。 Watch at Ease

curl の終了コード23は、受信データをローカルファイルへ書けなかったか、書き込みコールバックがエラーを返したことを示す。原因は、読み手の早期終了、存在しないパス、満杯のファイルシステム、別の一時ディレクトリを使うラッパーなど複数ある。

sudo、再インストール、stderr の抑制から始めない。完全なコマンドとパイプ各段の状態を保存し、同じURLを管理下のファイルへ一度書いて分岐する。

コマンドを保存し出力先を分類

完全なコマンド、curl --version、type -a curl、出力オプション、リダイレクト、パイプ各段、スクリプトの作業ディレクトリを保存する。

Bash では直後に ${PIPESTATUS[@]} を記録し、最後のコマンドの0が curl 23を隠さないようにする。必要なのが完全ファイルか早期一致かも決める。

管理下のファイルで一度分岐

同じURLと必要な認証・リダイレクトを保ち、head、grep、インストーラを外して所有するディレクトリの新規ファイルへ --output する。

成功なら元の消費者やラッパーを調べ、失敗なら23直前の警告を保存してパスを確認する。

実ファイルの出力先を監査

親ディレクトリ、対象ファイルシステムのブロックとinodeを確認し、同じユーザーで小さな一時ファイルを作る。

必要な親だけを作り、シンボリックリンク、読み取り専用マウント、bind mount、サンドボックス範囲を確認する。

パイプと早期終了を監査

head や grep -q は十分な入力で終了し、書き手は破断パイプを受け取る。curl は意図的か判断できない。

完全なペイロードが必要なら一時ファイルへ保存し検証後に消費者へ渡す。23を隠して切断ストリームを受け入れない。

ラッパーを確認し狭く修正

パッケージ版だけ失敗するなら実行されたcurl、制約、一時ディレクトリと /usr/bin/curl を比較し、他人のSnap事例だけで削除しない。

狭い修正後に一度再実行し、curlと消費者の状態、サイズ、提供済みチェックサムを確認し、不完全ファイルを除去する。

Original decision diagram for early-closing pipes, file destinations, wrappers and verification after curl error 23.
オリジナルイラスト:意図的な短時間読み取りと完全ダウンロード失敗は別々に確認します。 Watch at Ease