WSL2を使うときにいつも忘れるコマンドメモ
-
wsl --help
が分かりやすいのでそれだけで十分だが、結構分量あるのでよく使う奴だけメモ
停止(Linux上でShutdownできないので、PowserShellから実行)
# 起動中のディストリビューション確認
PS C:\Users\xxxx.xxx> wsl -l -v
NAME STATE VERSION
* docker-desktop-data Stopped 2
docker-desktop Stopped 2
Ubuntu-20.04 Running 2
# 停止(ディストリビューションを指定して停止)
PS C:\Users\xxxx.xxx> wsl -t Ubuntu-20.04
# 停止確認
PS C:\Users\xxxx.xxx> wsl -l -v
NAME STATE VERSION
* docker-desktop-data Stopped 2
docker-desktop Stopped 2
Ubuntu-20.04 Stopped 2
Linuxのコマンド実行 (今回はUbuntu)
- Linuxコマンド使いたい時に
- exec使う:
wsl -d Ubuntu-20.04 exec $cmd
- 例:
wsl -d Ubuntu-20.04 exec hostname -I
- exec使う:
PortForwardするとき
- WSL2上で立ち上げたサービスを、「外部から使用するとき」「内部のDockerContainerから使用するとき」に使用
- Windows側のポートを開放し、通信されたらWSL2のポートへと転送する
- 手順 (netsh.exeを使用する為、管理者権限で起動したPowerShell上から実行)
- 1.古いIPへの転送を停止
- 2.WSL2側のIPを取得(WSL2を起動するたびにPort変わるので、毎回取得
- 3.2で取得したIPへPortFoward
# 1.古いIPへの転送停止
PS C:\Users\xxxx.xxx>
$ netsh.exe interface portproxy delete v4tov4 listenport=312
# 2.WSL2側のIPを取得(ipを複数取得されるときのためぬい)
PS C:\Users\xxxx.xxx>
$ $IP=wsl -d Ubuntu-20.04 exec hostname -I | %{ $_.Split(" ")[0] }
# 3.2で取得したIPへPortFoward
PS C:\Users\xxxx.xxx>
$ $PORT=3128
PS C:\Users\xxxx.xxx>
$ netsh.exe interface portproxy add v4tov4 listenaddress=* listenport=$PORT connectaddress=$IP connectport=$PORT
# おまけ 監視中のPortFoward設定確認
PS C:\Users\xxxx.xxx>
$ netsh interface portproxy show all