Windows Subsystem for Linux,WSL,也就是Windows Linux子系统,可以在windows内使用linux, 类似于一台Linux虚拟机,但是,这并非是真的Linux虚拟机。
微软对于WSL的一些说明- 并未基于生产环境负载设计或构建WSL。如果你的应用或作业流程需要达到特定服务水平协议,那么不要将其运行在WSL之上。
- 需要使用 Windows 11 内部版本 22000或更高版本才能使用Linux GUI。
比如半角?号,在linux里面作为文件名没问题,但windows不行,告诉你说名称不正确。另外,\/:?*<>|都不行。
大小写问题
我在开发中就遇到过,因为windows不区分文件及目录名称大小写,造成开发的服务器程序无法运行。有补救的办法,但挺烦人的。如果你遇到了wsl大小写问题,可以用下面的办法来解决:
启用NTFS区分大小写功能
fsutil.exe file SetCaseSensitiveInfo 文件夹名称 enable
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中使用远程管理服务器文件之后,一切就和本地开发啥区别了。
,