WSL2を再起動する正しい手順|wslコマンドの使い方と注意点

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全体を一括でシャットダウン・再起動するコマンド手順の習得
  • 特定のLinuxディストリビューション(Ubuntu等)のみを個別停止・再起動する方法の理解
  • WSL2の稼働状況(Running / Stopped)を確認するコマンドの使い方
  • コマンドが応答しない・フリーズした場合のサービス再起動(LxssManager / WslService)と強制終了手順
  • WSL2の再起動が必要になる代表的なシチュエーションと注意点の把握

前提条件・対象読者

  • 対象読者: Windows環境でWSL2やDockerを利用しており、素早く再起動や停止を行いたいエンジニア・開発者
  • 対象OS: Windows 11 / Windows 10
  • 対象環境: WSL2(Windows Subsystem for Linux 2)
  • 実行場所: Windows側のPowerShell、Windows Terminal、またはコマンドプロンプト(Linux側のシェル内ではなく、Windowsホスト側から実行します)
  • 動作確認: Windows 11 / WSL 2.x系(最終確認: 2026年9月)

【結論】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 LxssManagerWSLバックグラウンドサービスを再起動(管理者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の完全シャットダウンは完了です。

このコマンドによって内部で以下の処理が行われます。

  1. 稼働しているすべてのLinuxディストリビューションが安全に停止します。
  2. WSL2の軽量仮想マシン(Utility VM)自体が完全にシャットダウンされます。
  3. Windowsタスクマネージャー上で大量のメモリを占有していた vmmem(または vmmemWSL)プロセスが消滅し、確保されていたRAMがホストWindowsへ全額返却・解放されます。

手順3:WSL2を起動(再起動)する

WSLには「reboot」に相当する単独の再起動コマンドは存在しません。そのため、シャットダウン後に再度WSLを立ち上げることで「再起動」となります。

PowerShellから起動する場合は、以下のいずれかを実行します。

既定のディストリビューションを起動する場合:

wsl

ディストリビューション名を指定して起動する場合(例: Ubuntu):

wsl -d Ubuntu

もちろん、スタートメニューやWindows Terminalのタブ一覧から「Ubuntu」をクリックして開くだけでも自動的に再起動が行われます。

wsl –shutdown が必要になる主なユースケース

単に作業を終えるときだけでなく、以下のようなトラブルシューティングや設定変更の際にも wsl --shutdown が不可欠です。

  • 設定ファイル(.wslconfig)の変更を反映したいとき: Windowsのユーザーフォルダ(C:\Users\<ユーザー名>\.wslconfig)にメモリ割り当て制限、virtiofs、ミラーリングネットワークなどを記述した場合、wsl --shutdown を実行して仮想マシン自体を再起動しないと設定が反映されません。
  • メモリ(vmmem)を強制的に解放したいとき: Dockerビルドや大規模なコンパイルを行った後、Linux側のページキャッシュが残ってWindowsの空きメモリを圧迫することがあります。wsl --shutdown を実行すれば、メモリを確実に一括リセットできます。
  • ネットワーク不通や時刻ズレを直したいとき: ノートPCをスリープから復帰させた後、WSL2内のシステムクロック(時刻)が大きくズレて apt update や git push がSSLエラーで失敗することがあります。WSL2全体を再起動することで、Windowsホストの正確な時刻やネットワーク状態と同期し直せます。

実行時の注意点(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 --shutdown: WSL2仮想マシン(VM)自体を落とすため、すべてのディストリビューションが停止し、メモリが全解放される。
  • wsl -t: 指定したディストリビューションのユーザー空間プロセスのみを終了させる。仮想マシン自体や他のディストリビューションは稼働したまま維持される。

他の開発作業に影響を与えたくない場合は 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

各列の意味は以下の通りです。

  • NAME(名前): インストールされているLinuxディストリビューションの名称です。先頭にアスタリスク(*)が付いている行は、既定(デフォルト)に設定されている環境を示します。
  • STATE(状態): 現在の稼働ステータスです。
    • Running: 正常に起動・稼働中
    • Stopped: 停止中
  • VERSION(バージョン): WSLのアーキテクチャを示します。WSL2環境であれば 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開発環境の構築手順や高速化設定、トラブル解決を体系的に学びたい方は、以下の完全ガイドもあわせて参考にしてください。

WSL2+Dockerで作るWindows開発環境構築まとめ
WindowsマシンでWeb開発やバックエンド開発、AIアプリ開発を行う際、いまや欠かせない標準構成となったのが「Windows + WSL2 + Docker + VS Code」の組み合わせです。かつては「Web開発といえばMac一択」…

参考情報

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

WSL の基本的なコマンド | Microsoft Learn

WSL での高度な設定の構成 | Microsoft Learn