
Windows上でWSL2(Windows Subsystem for Linux 2)を使って開発や作業を行っていると、設定変更の反映や動作不良の解消のために、WSL2を再起動したい場面が頻繁に発生します。例えば、.wslconfig や /etc/wsl.conf を書き換えたとき、メモリ消費(vmmem プロセス)を解放したいとき、あるいはネットワークやDockerがうまく繋がらなくなったときなどです。
このような場合、Windows PC全体を再起動すればリセットできますが、開いている作業ファイルや他のアプリケーションをすべて閉じる必要があり、無駄な時間がかかってしまいます。
WSL2は、Windows側のPowerShellやコマンドプロンプトから専用コマンドを1行実行するだけで、わずか数秒で安全にシャットダウンし、クリーンな状態で再起動できます。
この記事では、検索ユーザーが今すぐ知りたい「結論の再起動コマンド」を冒頭で提示しつつ、WSL2全体の一括停止(wsl --shutdown)から特定ディストリビューションのみの個別停止(wsl -t)、稼働ステータスの確認、さらにはフリーズして応答しない場合の強制終了・サービス再起動手順までを網羅して分かりやすく解説します。
この記事で行うこと
前提条件・対象読者
【結論】WSL2を再起動・停止するコマンド
まずは最も知りたい「結論のコマンド」をまとめました。作業中のPowerShellまたはコマンドプロンプトにコピー&ペーストしてそのまま実行できます。
WSL2全体を再起動するワンライナー
WSL2を完全にシャットダウンし、即座に再起動するためのコマンドです。PowerShellで実行します。
wsl --shutdown; wsl
コマンドプロンプト(cmd.exe)で1行で実行する場合はアンパサンド(&)を使用します。
wsl --shutdown & wsl
前半の wsl --shutdown でWSL2の仮想マシン全体を停止し、後半の wsl で既定のディストリビューション(Ubuntuなど)を即座に再起動しています。通常の再起動であればこの1行で完了します。
WSL2の停止・再起動コマンド早見表
| 目的 | 実行コマンド | 影響範囲 |
|---|---|---|
| WSL2全体をシャットダウン | wsl --shutdown | 全ディストリビューション、WSL2仮想マシン、Docker停止 |
| 特定の環境のみ停止 | wsl -t <ディストリビューション名> | 指定したディストリビューションのみ停止(他は維持) |
| 特定の環境を再起動 | wsl -t <名前>; wsl -d <名前> | 指定した環境のみ停止して即座に起動 |
| 稼働状態の確認 | wsl -l -v | インストール済み環境の稼働状況一覧を表示 |
| 応答しない場合の強制終了 | Restart-Service LxssManager | WSLバックグラウンドサービスを再起動(管理者PowerShell) |
WSL2全体をシャットダウンして再起動する方法(wsl –shutdown)
WSL2で最も基本的かつ強力な停止方法が wsl --shutdown コマンドです。
手順1:Windowsのターミナルを起動する
キーボードの Win + X キーを押し、クイックアクセスメニューから「ターミナル」または「PowerShell」を選択して起動します。
注意点として、WSL内のUbuntuシェル(Bash等)から wsl --shutdown を実行するのではなく、必ずWindows側のホスト環境(PowerShellやコマンドプロンプト)から実行してください。
手順2:wsl –shutdown を実行する
プロンプトに以下のコマンドを入力して実行します。
wsl --shutdown
コマンドを実行すると、数秒間処理が行われたあと、特にエラーメッセージ等は表示されずに次の入力プロンプトに戻ります。これでWSL2の完全シャットダウンは完了です。
このコマンドによって内部で以下の処理が行われます。
- 稼働しているすべてのLinuxディストリビューションが安全に停止します。
- WSL2の軽量仮想マシン(Utility VM)自体が完全にシャットダウンされます。
- Windowsタスクマネージャー上で大量のメモリを占有していた
vmmem(またはvmmemWSL)プロセスが消滅し、確保されていたRAMがホストWindowsへ全額返却・解放されます。
手順3:WSL2を起動(再起動)する
WSLには「reboot」に相当する単独の再起動コマンドは存在しません。そのため、シャットダウン後に再度WSLを立ち上げることで「再起動」となります。
PowerShellから起動する場合は、以下のいずれかを実行します。
既定のディストリビューションを起動する場合:
wsl
ディストリビューション名を指定して起動する場合(例: Ubuntu):
wsl -d Ubuntu
もちろん、スタートメニューやWindows Terminalのタブ一覧から「Ubuntu」をクリックして開くだけでも自動的に再起動が行われます。
wsl –shutdown が必要になる主なユースケース
単に作業を終えるときだけでなく、以下のようなトラブルシューティングや設定変更の際にも wsl --shutdown が不可欠です。
実行時の注意点(Docker環境への影響)
Docker Desktop(WSL2バックエンド)や、Windowsのコンテナ機能であるWSL Containers(wslc)を利用している場合、wsl --shutdown を実行するとDockerのバックエンドVMも同時に停止します。
データベースコンテナの書き込み中や、長時間かかるバッチ処理の実行中にシャットダウンしてしまうとデータの破損や中断につながる恐れがあるため、事前にコンテナの状態を確認してから実行してください。
特定のディストリビューションのみ停止・再起動する方法(wsl -t <名前>)
「Ubuntuの調子が悪いので再起動したいが、Docker環境や別のLinux環境は落としたくない」という場合には、ディストリビューション単位で個別に停止する -t(または --terminate)オプションを使用します。
手順1:対象のディストリビューション名を確認する
停止したいディストリビューションの正確な名前を調べるため、以下のコマンドを実行します。
wsl -l -v
手順2:指定したディストリビューションを停止する
以下の書式でコマンドを実行します。
wsl -t <ディストリビューション名>
例えば、Ubuntuを個別に停止する場合は次のように実行します。
wsl -t Ubuntu
長形式のオプション(--terminate)を使っても同じ結果が得られます。
wsl --terminate Ubuntu
手順3:指定したディストリビューションを起動する
停止が完了したら、以下のコマンドで該当の環境だけを再び起動します。
wsl -d Ubuntu
停止から起動までを1行でまとめて実行したい場合は、以下のようにセミコロンで連結します。
wsl -t Ubuntu; wsl -d Ubuntu
wsl –shutdown との挙動の違い
他の開発作業に影響を与えたくない場合は wsl -t を、WSL2の動作そのものが重い場合や設定反映を行いたい場合は wsl --shutdown を選択するのが適切な使い分けです。
WSL2の稼働状態を確認するコマンド(wsl -l -v)
停止や再起動を行ったあと、「本当に正しく停止できたか」「起動しているディストリビューションはどれか」を確認するには、wsl -l -v コマンドを使用します。
状態確認コマンドの実行
PowerShellで以下のコマンドを実行します。
wsl -l -v
短縮形ではなく wsl --list --verbose と入力しても同様に実行できます。
出力結果の見方
コマンドを実行すると、以下のような形式で一覧が出力されます。
NAME STATE VERSION
* Ubuntu Running 2
docker-desktop Running 2
docker-desktop-data Stopped 2
各列の意味は以下の通りです。
wsl --shutdown を実行した直後に wsl -l -v を実行し、すべてのディストリビューションの STATE が Stopped になっていれば、完全な停止が確認できます。
WSLが応答しない・停止しない場合の強制終了方法(LxssManagerサービスの再起動など)
WSL2の処理がハングアップしてしまい、wsl --shutdown や wsl -t を実行してもコマンドプロンプトが応答しない(プロンプトが戻ってこない)、あるいは延々と Running のまま停止しない場合があります。
そのような場合の強制復旧アプローチを、安全な順に解説します。
対処法1:WSL管理サービスを再起動する(管理者PowerShell)
WSLを裏で制御しているWindowsのバックグラウンドサービスを再起動することで、OS全体を再起動することなくWSL2を強制終了・復帰させることができます。
PowerShellを「管理者として実行」で起動し、以下のコマンドを実行します。
お使いのWindowsやWSLのバージョンによって、サービス名が LxssManager または WslService のいずれかになっています。
従来のWindows標準組み込み版WSLの場合:
Restart-Service -Name LxssManager
Microsoft Store版WSL(最新のWindows 10/11で推奨される環境)の場合:
Restart-Service -Name WslService
どちらのサービスが登録されているか分からない場合は、事前に以下のコマンドでサービス名を確認できます。
Get-Service -Name *wsl*, *lxss*
サービス再起動に成功すると、動いていたWSL関連プロセスが一掃され、再び正常に wsl コマンドが受け付けられる状態に戻ります。
GUIの管理ツールから行いたい場合は、Win + R キーを押して services.msc と入力し、「サービス」一覧から「LxssManager」または「WSL サービス(Windows Subsystem for Linux Service)」を探して右クリックし、「再起動」を選択してください。
対処法2:taskkillコマンドでプロセスを直接強制終了する
サービス自体の再起動すらタイムアウトしてしまうような重度なフリーズの場合は、WSLのプロセスを直接強制終了(kill)します。
PowerShellを管理者として開き、以下のコマンドを実行します。
taskkill /f /im wslservice.exe
taskkill /f /im wsl.exe
コマンドの解説:
/f: 強制終了(Force)フラグ/im: イメージ名(実行ファイル名)の指定
また、WSL2の仮想マシン本体プロセスである vmmem や vmmemWSL が暴走している場合は、タスクマネージャー(Ctrl + Shift + Esc)の「詳細」タブを開き、wslservice.exe や vmmemWSL を右クリックして「タスクの終了」を試みてください。
対処法3:WSLコンポーネントを最新版に更新する
日常的にフリーズや停止不能が頻発する場合は、WSLのカーネルやパッケージ自体に既知の不具合が存在する可能性があります。Microsoft Store経由で最新のWSLに更新しておきましょう。
PowerShellで以下のコマンドを実行します。
wsl --update
更新が完了したら、現在のバージョン情報を確認します。
wsl --version
それでも解決しない場合はWindowsの完全再起動
上記すべての手順を試してもプロセスが消えず、WSLが起動できない場合は、WindowsのOS自体を再起動する必要があります。
その際、Windowsの「高速スタートアップ」が有効になっていると、シャットダウンしてもメモリ上の破損したセッション情報が保持されてしまうケースがあります。そのため、電源メニューでは「シャットダウン」ではなく、必ず「再起動」を選択してください。
次に読むおすすめ記事
WSL2とDockerを使ったWindows開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

参考情報
WSL のトラブルシューティング | Microsoft Learn

