什么是wsl

Windows Subsystem for Linux,WSL,也就是Windows Linux子系统,可以在windows内使用linux, 类似于一台Linux虚拟机,但是,这并非是真的Linux虚拟机。

微软对于WSL的一些说明特殊符号

比如半角?号,在linux里面作为文件名没问题,但windows不行,告诉你说名称不正确。另外,\/:?*<>|都不行。

wsl在哪里启动(为什么不建议你使用windows中的WSL)(1)

大小写问题

我在开发中就遇到过,因为windows不区分文件及目录名称大小写,造成开发的服务器程序无法运行。有补救的办法,但挺烦人的。如果你遇到了wsl大小写问题,可以用下面的办法来解决:

启用NTFS区分大小写功能

fsutil.exe file SetCaseSensitiveInfo 文件夹名称 enable

禁用NTFS区分大小写功能

fsutil.exe file SetCaseSensitiveInfo 文件夹名称 disable

注意,必须在安装WSL之后,上面的命令才会有作用!

奇怪的互操作问题

你在windows里面直接操作WSL创造的文件,然后再回去WSL操作时可能会出现奇怪的毛病!有时候明明文件删除了,但在Linux里面还是无法创建同名的文件,在重启电脑后又正常。

网络不可靠

WSL中的网络还是通过Windows实现的, 这与真实的Linux虚拟机不同,也就是说,你在Windows里面对于网络的设置会影响到WSL,如果你在进行Linux方面的网络编程,那么可能会出现一些意想不到的怪异问题。

内存占用

当你退出WSL中的应用程序以及Docker,这些占用的内存仍然会被WSL保留。你可以在PowerShell中通过

wsl --showdown

来完全关闭WSL,以便清空其占用内存。

总结

如果你想要开发运行于Linux环境的应用程序、后台服务,那么请不要使用WSL。有可能出现各种奇怪的问题,而这些问题在虚拟机的Linux里面根本不会出现!虽然虚拟机的Linux块头大一点儿,多占用一些资源,但与真实的服务器环境99%的类似,除了物理位置不同之外,各种运行环境可以保持100%的一致!看似一开始安装虚拟机、配置会浪费一些时间,但其实在开发及部署的时候会更方便。

所以,请使用最接近生产环境的虚拟机Linux来进行软件开发, 而不要使用windows的WSL。

WSL只适合于用于非生产负载环境和一些快速简单的任务。我个人在体验过WSL没多久就又回到了虚拟机的Linux环境,在VS Code中使用远程管理服务器文件之后,一切就和本地开发啥区别了。

,