WSL が「ディストリが無い」ように見える時、疑うのは導入状態ではなく滞留プロセス
wsl --status は即答するのに wsl -e が無限ハングする非対称が誤診を生む。真因は滞留した wsl.exe クライアント。切り分け・復旧・時間制限付き呼び出し・PATH interop の罠まで。
約4万トークンの節約 (API料金換算で約60円分)。 要件定義・技術調査・試行錯誤ぶんのトークンがまるごと不要になります。※ 出品者申告とレビューに基づく推定値。モデル・タスク内容により変動します。
この巻物について
「WSL が「ディストリが無い」ように見える時、疑うのは導入状態ではなく滞留プロセス」は、開発プロセスカテゴリのAI指示書(MDファイル)です。wsl --status は即答するのに wsl -e が無限ハングする非対称が誤診を生む。真因は滞留した wsl.exe クライアント。切り分け・復旧・時間制限付き呼び出し・PATH interop の罠まで。この巻物をAIに読み込ませると、ゼロから設計・調査する場合に比べて 約4万トークン(API料金換算で約60円)・95%のトークンを節約できます。
- カテゴリ
- 開発プロセス
- 対応AI
- claude-code、cursor、codex-cli
- ライセンス
- 商用利用可 (再販不可)
- 価格
- 無料
- ゼロから開発時
- 約4.2万トークン
- この巻物使用時
- 約2,100トークン
- 節約量
- 約4万トークン (約60円)
- 更新日
- 2026-09-25
使い方 (AIに渡す3つの方法)
いちばん簡単なのはワンライナー。Claude Code のターミナルに貼るだけです。
claude "https://makimono-md.vercel.app/api/v1/files/wsl/raw を読み込んで、この指示書どおりに実装して"
中身
WSL が「ディストリが無い」ように見える時、疑うのは導入状態ではなく滞留プロセス
Windows 上のエージェントから WSL 経由で CLI を動かしていると、ある日突然すべてが無反応になる。
このとき 「WSL が入っていない」「ディストリが消えた」「再起動が要る」と誤診しやすい。
実際には導入済みで、wsl.exe クライアントが溜まって詰まっているだけのことがある。
この巻物は、その切り分けと復旧、そして再発を止める呼び出し方をまとめる。
症状(この形なら当てはまる)
wsl --statusとwsl -l -vは即座に正しく答える(ディストリ名もバージョンも出る)wsl -e <任意のコマンド>が返ってこない(数分待っても無反応)wsl --shutdownすら返ってこない- タスクは「成功」を返しているのに、WSL 内で動くはずの処理のログが1行も出ていない
なぜ誤診するのか(ここが本質)
WSL のコマンドは2種類あり、詰まった時の見え方が非対称になる。
| 種類 | 例 | 詰まった時 |
|---|---|---|
| レジストリを読むだけ | wsl --status / wsl -l -v / wsl -l -q | 即答する |
| 仮想マシンに到達する | wsl -e ... / wsl -d <名> -- ... / wsl --shutdown | 無限にハングする |
前者だけ見ると「WSL は生きている」と読める。後者だけ見ると「ディストリが無い」と読める。 どちらも間違い。 判定は必ず後者の実行可否で行う。
さらに厄介なのは、この状態で無制限に wsl を呼び続けると滞留がどんどん増えることだ。
エージェントが自動でリトライすると、10件、20件と積み上がって症状が悪化する。
切り分け手順
1. 実行できるかを直接見る(一覧の有無で判断しない)
wsl -e /bin/echo OK
OK が返れば正常。返らなければ以下へ進む。
2. 滞留プロセスを数える
Get-Process wsl -ErrorAction SilentlyContinue | Select-Object Id, StartTime, CPU
CPU がほぼ 0 のまま何十分も生きている wsl が複数あるなら、それが原因。
3. 再起動保留と紛らわしいので、そちらも潰しておく
(Get-CimInstance Win32_OperatingSystem).LastBootUpTime
Get-Service -Name LxssManager, WslService -ErrorAction SilentlyContinue | Select Name, Status
- 最終起動が機能追加より後なら、再起動保留ではない
- WSL2 では
WslServiceが Running なら正常。LxssManagerが Stopped でも異常ではない(旧世代の WSL1 用サービス)
復旧
Get-Process wsl | Stop-Process -Force
Start-Sleep -Seconds 3
wsl --shutdown
wsl -e /bin/echo OK
⚠️ 落とすのは wsl.exe だけ。 bash プロセスは落とさないこと。
同じマシンで動いている別のシェルやエージェントのセッションが混ざっている可能性がある。
vmmem や WSL のサービス本体も落とさない(wsl --shutdown が正規の手順)。
再発防止: WSL の呼び出しには必ず時間制限を付ける
滞留が積み上がる原因は、返ってこない呼び出しを打ちっぱなしにすることに尽きる。
$j = Start-Job { wsl -e bash -c "<コマンド>" 2>&1 }
if (Wait-Job $j -Timeout 120) { Receive-Job $j } else { "タイムアウト"; Stop-Job $j }
Remove-Job $j -Force
- エージェントに自動リトライさせる場合、リトライ前に滞留数を確認させる
- タイムアウトした呼び出しは必ず
Stop-Jobで始末する
詰まりが取れた後に残っていた「本当の障害」
滞留を解消しても目的の CLI が動かないことがある。PATH interop の罠が典型。
$ wsl -e bash -c "command -v node; command -v npm; command -v <対象CLI>"
(node は出ない)
/mnt/c/Program Files/nodejs/npm
/mnt/c/Users/<ユーザー>/AppData/Roaming/npm/<対象CLI>
/mnt/c/... に解決されているものは Windows 側の実体で、Linux では動かない。
Linux ネイティブを入れ直す必要がある。
export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get install -y ca-certificates curl gnupg
curl -fsSL https://deb.nodesource.com/setup_22.x | bash -
apt-get install -y nodejs
npm install -g <対象パッケージ>
導入後は解決順を確認する。ここを見ずに「入れた」で終わらせない。
$ wsl -e bash -c "which -a <対象CLI>"
/usr/bin/<対象CLI> ← Linux 側が先頭なら正しい
/bin/<対象CLI>
/mnt/c/Users/.../npm/<対象CLI> ← Windows 側が残っていても、後ろなら実害なし
落とし穴のまとめ
- 「一覧が引ける=生きている」ではない。 実行してみるまで分からない
- 「実行できない=入っていない」でもない。 滞留を先に疑う
- 終了コード 0 は、その処理が走った証拠にならない。 ログに該当ステップの行が出ているかで見る
- タスクスケジューラが参照するスクリプトの更新時刻を見る。実行時刻より後に更新されていれば、その回は旧版で走っている
apt upgradeは打たない。必要な物だけ入れる
よくある質問
+「WSL が「ディストリが無い」ように見える時、疑うのは導入状態ではなく滞留プロセス」とは何ですか?
wsl --status は即答するのに wsl -e が無限ハングする非対称が誤診を生む。真因は滞留した wsl.exe クライアント。切り分け・復旧・時間制限付き呼び出し・PATH interop の罠まで。
+どれくらいトークン(費用)を節約できますか?
ゼロから開発すると約4.2万トークンかかりますが、この巻物を使えば約2,100トークンで済みます。差し引き約4万トークン(API料金換算で約60円)・95%の節約です。
+どうやって使いますか?
無料です。MDファイルを Claude Code などのAIに読み込ませるだけ。ワンライナーをターミナルに貼れば実装が始まります。要件定義や技術調査を省いて実装だけにトークンを使えます。
+どのAIツールに対応していますか?
claude-code、cursor、codex-cli に対応しています。
+商用利用できますか?
ライセンスは「商用利用可 (再販不可)」です。
🤝 自分でAIを動かすのは、まだ不安…という方へ
この巻物の内容を、AIを使うプロに丸ごと任せることもできます。姉妹サービスAI代行堂なら「LINEで頼むだけで、仕事が完成」。
関連する巻物
スマホ(Remote Control)から即相談できる Claude Code タブを VS Code に毎朝自動で用意する
自作VS Code拡張で公式Claude Codeのコマンド(editor.openLast/newConversation/renameSessionTab)を叩き、名前付きタブをN本自動補充。夜間はWM_CLOSE→再起動で毎朝揃える。--bg/ターミナル経路・タブ0でのnewConversation・SendKeys再読み込みが失敗する実測付き
夜間ジョブ異常を通知で終わらせず自動修復→AI修理PR→人へ引き渡す閉ループ
監視の『検知して通知』の後段に、決定的Playbook→AIコーダーの隔離worktree修理PR→持ち越し→人への3要素引き渡し、を足す実装指示書。argvで指示を渡すな等の実測の落とし穴つき
ドキュメント駆動開発プロセス CLAUDE.md — 作るものを固めてから書かせる
「AIが暴走して意図と違うものを作る」を根絶する開発プロセス指示書。UI仕様→機能設計→実装の順をAIに強制し、1ファイルごとに承認ゲートを挟む。受託開発・チーム開発向け。
この巻物、誰かのトークンも救えます
𝕏 で節約レシートをシェア