解决win10 wsl子系统安装的ubuntu环境中lsof,netstat命令查看端口没有任何输出的问题
最近有个以前的ssm项目需要在新电脑上运行测试一下,发现需要redis环境,看了官网说:有两种选择:
1. 要么在虚拟机比如vmware安装linux基础环境,然后再安装redis
2. 要么可以利用win10的wsl linux子系统安装ubuntu,然后再安装redis
总之,需要linux环境
由于这是台新台式机,不想使用vmware安装,于是尝试安装了wsl版的ubuntu.
安装方法很简单: 在microsoft store应用商店里搜索ubuntu, 然后点击获取,下载完成以后。
点击打开即可。刚开始会提示初始化用户名,确认点几个回车以后,就可以用了。
但是这个ubuntu系统有个致命的问题: 通过lsof,netstat命令查看端口是没有任何输出的!
换句话说: 你没法使用lsof,netstat命令确定一个服务的状态是否是运行的!
这个问题相当糟糕,是一个非常严重的问题。
我查了很多资料,都没有找到原因,后来在下面的一篇文章中找到了线索:
https://www.reddit.com/r/bashonubuntuonwindows/comments/8cjko7/list_open_files_lsof_not_working/
I think I found the answer.
netstat and lsof both use /proc/net/* files including /proc/net/tcp to identify sockets, their type and status. These files are empty in WSL causing the socket to not be identified.
There is work being done to add netstat support, which leads me to believe that /proc/net/tcp and other files will contain information and thus lsof will work.
简单说: 就是netstat和lsof是使用/proc/net/目录下的文件来查询socket, 因为linux一切皆文件。
但是在wsl系统中/proc/net/目录下的这些文件都是空的!,所以运行netstat和lsof比如没有任何输出!
那么怎么解决这个问题呢,也查了很多资料,据说把wsl有两个版本: wsl1和wsl2,把wsl1升级到wsl2,然后重装ubuntu即可。
先检查一下系统是否满足安装wsl2的要求:
Windows 版本: WSL 2 是从 Windows 10 版本 1903 及更高版本开始引入的。较早的 Windows 版本可能无法使用 WSL 2。
64 位系统: WSL 2 只支持 64 位的 Windows 操作系统。确保你的计算机硬件和操作系统都是 64 位的。
虚拟化支持: WSL 2 使用虚拟化技术(通常是 Hyper-V)来在 Windows 中运行一个真正的 Linux 内核。你的计算机必须支持虚拟化,并且虚拟化选项必须在 BIOS 或 UEFI 中启用。大多数现代计算机默认启用了虚拟化支持,但你可能需要在 BIOS 或 UEFI 设置中检查确认。
首先第一步:升级wsl1到wsl2:
a. 用管理员权限打开powershell,运行下面的命令:
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
重新启动
然后打开控制面板,在程序与功能
—>启用或关闭Windows功能
,检查下图中红框圈处是否已经勾选;若没有,则需要勾选并确认。
b. 接着安装wsl升级包: https://wslstorestorage.blob.core.windows.net/wslblob/wsl_update_x64.msi
至此wsl2安装完毕
注意:为了保证wsl2能彻底生效,需要运行下面的命令:
wsl --set-default-version 2
就是默认全局使用wsl2,注意:这一步非常,非常重要!是真正启用wsl2的关键!
然后第二步就是安装ubuntu了:
这里分两种情况:
1. 如果是已经安装过了ubuntu的,需要将其卸载
然后从microsoft store应用商店里搜索ubuntu重新获取并安装即可。
这时候运行wsl -l -v就会发现wsl version版本是2了。
此时再使用lsof命令查询端口就会有输出信息了:
网上有种方法:wsl --set-version Ubuntu 2,进行wsl2的重新绑定并完成迁移,但是我试过了,没有效果。不知道是不是需要:先将ubuntu程序进行重置,然后再通过wsl --set-version命令进行绑定。各位可以试试看。
2. 第二种情况:如果全新安装ubuntu的,直接从microsoft store应用商店里搜索ubuntu获取安装即可。
至此问题全部解决。
然后补充一下关于wsl的知识:
WSL是适用于Linux的Windows子系统(英语:Windows Subsystem for Linux,简称WSL)是一个为在windows10和windows server 2019以上能够原生运行Linux二进制可执行文件(ELF格式)的兼容层。
WSL 1是通过适配层实现的,当你在 WSL 1 中运行 Linux 命令时,这些命令会发送到适配层,然后适配层将 Linux 系统调用转换为 Windows 系统调用。
WSL1不是将非原生功能包装到Win32系统调用中,而是利用NT内核执行程序将Linux程序作为特殊的、隔离的最小进程(称为“pico-processes”)作为专用系统连接到内核模式“pico-providers”。
Linux 应用程序实际上是在 Windows 用户模式进程中运行,因此它们与 Windows 主机操作系统共享一些资源。这可能导致一些限制,特别是在内存和进程管理方面。
WSL1 和 WSL2。它们最大的不同是,WSL1 是基于动态翻译的方式将 Linux 的系统调用翻译成 Windows NT的系统调用,所以WSL1并不是原生的linux内核
开发者在 WSL1 中遇到的问题就是,部分 linux 的命令无法成功运行。当你遇到这个问题,将会一件非常恼火的事情。比如,WSL1 中无法成功运行 docker,因为需要 linux 关于命名空间的系统调用,而 WSL1 并不支持。最终,微软还是决定使用虚拟化技术来克服这一问题
而 WSL2 是基于虚拟机的,通过在虚拟机中运行真正的 Linux 内核,显著提高了性能。它更接近于原生 Linux 环境,可以更好地处理文件系统 I/O 和网络性能。
- WSL 1:在WSL 1中,Windows主机操作系统和Linux子系统之间使用了适配层。Linux系统调用被转换为Windows系统调用,但它仍然是运行在Windows宿主操作系统的子系统。
- WSL 2:WSL 2通过在Windows宿主系统上运行一个真正的Linux内核实现了更高的兼容性。它通过虚拟机(基于Hyper-V技术)来运行这个内核,从而更接近于独立的Linux环境。
相关文章:

解决win10 wsl子系统安装的ubuntu环境中lsof,netstat命令查看端口没有任何输出的问题
最近有个以前的ssm项目需要在新电脑上运行测试一下,发现需要redis环境,看了官网说:有两种选择: 1. 要么在虚拟机比如vmware安装linux基础环境,然后再安装redis 2. 要么可以利用win10的wsl linux子系统安装ubuntu&…...
【OpenFeign】OpenFeign结合Hystrix和Sentinel实现熔断降级
OpenFeign可以与Hystrix和Sentinel结合使用,实现降级和熔断。 OpenFeign与Hystrix结合使用 使用OpenFeign需要引入OpenFeign的依赖: <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…...
软件工程(十) 需求工程之需求开发与管理
前面我们学习到了需求工程的概念与分类,我们知道了需求工程主要分为需求开发和需求管理,但是没有说明到底该如何开发需求,有哪些方法去开发需求。到底该如何进行需求管理,又有哪些进行需求管理的方式。具体是如何去做的。下面我们将会详细进行描述。 1、需求开发 1.1、需…...

C++网狐服务器引入开源日志库spdlog
很多人对日志库不以为然,包括网狐这种十几年的公司都不重视,其实日志库记录的东西能在线上出问题时高效解决,特别是别人写的东西,人又走了,出了问题,还可以用日志分析快速解决。要是没有日志记录࿰…...

【C++】—— c++11之智能指针
前言: 本期,我们将要学习的是在c11中新提出的概念——异常指针! 目录 (一)智能指针的引入 (二)内存泄漏 1、什么是内存泄漏,内存泄漏的危害 2、内存泄漏分类(了解&a…...

html5——前端笔记
html 一、html51.1、理解html结构1.2、h1 - h6 (标题标签)1.3、p (段落和换行标签)1.4、br 换行标签1.5、文本格式化1.6、div 和 span 标签1.7、img 图像标签1.8、a 超链接标签1.9、table表格标签1.9.1、表格标签1.9.2、表格结构标签1.9.3、合并单元格 1.10、列表1.10.1、ul无序…...

如何在 Vue TypeScript 项目使用 emits 事件
Vue是构建出色的Web应用程序的最灵活、灵活和强大的JavaScript框架之一。Vue中最重要的概念和关键特性之一是能够促进应用程序组件之间的通信。让我们深入探讨一下Vue中的“emits”概念,并了解它们如何以流畅和无缝的方式实现父子组件之间的通信。 Vue中的emits是什…...
文件操作 黑马教程(04)
1.文本文件 写文件 #include "iostream" #include "fstream" using namespace std; /** 文件操作** 程序运行时产生的数据都属于临时数据,程序一旦结束都会被释放* 通过文件可以将数据持久化* C中对文件操作需要包含头文件<fstream>** 文…...

Jmeter(二十七):BeanShell PostProcessor跨线程全局变量使用
在性能测试中,两个相关联的接口不一定都在同一个线程组,遇见这种情况时,我们要进行跨线程组传参,此处用登录和查询配送单两个请求举例; 1、登录请求中配置json提取器,将接口返回的token保存在变量中&#…...

手写表格OCR识别并与大模型ChatGPT交互?
这是一张手写表格,姓名做了脱敏处理。现在需要对其识别,并分析。 直接粘贴剪切板中的表格原始图片,在网页中ctlV进行识别。识别结果列用分隔符|,可以直接粘贴到excel,进行数据列分隔。为了美观期间,也可以用…...
使用 v-for 指令和数组来实现在 Uni-app 中动态增减表单项并渲染多个数据
在 data 中定义一个数组,用于存储表单项的数据: data() {return {formItems: []} } 在模板中使用 v-for 指令渲染表单项: <template><div><div v-for"(item, index) in formItems" :key"index"><…...

xml
1.xml 1.1概述【理解】 万维网联盟(W3C) 万维网联盟(W3C)创建于1994年,又称W3C理事会。1994年10月在麻省理工学院计算机科学实验室成立。 建立者: Tim Berners-Lee (蒂姆伯纳斯李)。 是Web技术领域最具权威和影响力的国际中立性技术标准机构。 到目前为…...

Java中的动态代理(JDK Proxy VS CGLib)
前言 动态代理可以说是Java基础中一个比较重要的内容,这块内容关系到Spring框架中的AOP实现原理,所以特别写了一篇作为个人对这块知识的总结。这部分内容主要包括:JDK Proxy和CGLib的基本介绍、二者的实现原理、代码示例等。 什么是动态代理…...
Redis 7 第七讲 哨兵模式(sentinal)
哨兵模式 哨兵巡查监控后台master主机是否故障,如果出现故障根据投票时自动将某一个从库转换成新的主库,继续对外服务。 作用 1. 监控redis运行状态,包括master和slave 2. 当master down机,能自动将salve切换成新的master 应用场景 主从监控监控主从redis库运行的状态…...

Python入门教程 - 判断语句(二)
目录 一、布尔类型 二、比较运算符 三、if判断语句 一、布尔类型 True False result1 10 > 5 result2 10 < 5 print(result1) print(result2) print(type(result1)) True False <class bool> 二、比较运算符 ! > < > < 比较运算的结果是布尔…...
LeetCode-55-跳跃游戏-贪心
题目描述: 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 解…...

【USRP】调制解调系列4:BPSK、QPSK、8PSK、OQPSK、Pi/4DQPSK,基于labview的实现
PSK Phase Shift Keying – 相移键控 在某些调制解调器中用于数据传输的调制系统,在最简单的方式中,二进制调制信号产生0和1。载波相位来表示信号占和空或者二进制1和O。对于有线线路上较高的数据传输速率,可能发生4个或8个不同的相移&…...

深入探讨梯度下降:优化机器学习的关键步骤(一)
文章目录 🍀引言🍀什么是梯度下降?🍀损失函数🍀梯度(gradient)🍀梯度下降的工作原理🍀梯度下降的变种🍀随机梯度下降(SGD)🍀批量梯度下降…...

layui框架学习(40:数据表格_主要事件)
Layui数据表格模块主要通过各类事件响应工具栏操作、单元格编辑或点击等交互操作,本文学习table数据表格模块中的主要事件及处理方式。 头部工具栏事件。通过代码“table.on(‘toolbar(test)’, function(obj))”获取lay-filter属性为test的数据表格的头部工具栏…...

kotlin实现猜数游戏
游戏规则 1.程序随机生成一个1到100的数字,作为MagicNumber 2.用户根据提示输入数据,只有三次机会输入数据 代码 代码很简单,使用了let内置函数 fun main() {//生成随机数可以使用java的方法//val magicNumber Random().nextInt(11)val ma…...

多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...

CTF show Web 红包题第六弹
提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框,很难让人不联想到SQL注入,但提示都说了不是SQL注入,所以就不往这方面想了 先查看一下网页源码,发现一段JavaScript代码,有一个关键类ctfs…...

Day131 | 灵神 | 回溯算法 | 子集型 子集
Day131 | 灵神 | 回溯算法 | 子集型 子集 78.子集 78. 子集 - 力扣(LeetCode) 思路: 笔者写过很多次这道题了,不想写题解了,大家看灵神讲解吧 回溯算法套路①子集型回溯【基础算法精讲 14】_哔哩哔哩_bilibili 完…...

现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...

springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
Python网页自动化Selenium中文文档
1. 安装 1.1. 安装 Selenium Python bindings 提供了一个简单的API,让你使用Selenium WebDriver来编写功能/校验测试。 通过Selenium Python的API,你可以非常直观的使用Selenium WebDriver的所有功能。 Selenium Python bindings 使用非常简洁方便的A…...

VisualXML全新升级 | 新增数据库编辑功能
VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...
【FTP】ftp文件传输会丢包吗?批量几百个文件传输,有一些文件没有传输完整,如何解决?
FTP(File Transfer Protocol)本身是一个基于 TCP 的协议,理论上不会丢包。但 FTP 文件传输过程中仍可能出现文件不完整、丢失或损坏的情况,主要原因包括: ✅ 一、FTP传输可能“丢包”或文件不完整的原因 原因描述网络…...
[特殊字符] 手撸 Redis 互斥锁那些坑
📖 手撸 Redis 互斥锁那些坑 最近搞业务遇到高并发下同一个 key 的互斥操作,想实现分布式环境下的互斥锁。于是私下顺手手撸了个基于 Redis 的简单互斥锁,也顺便跟 Redisson 的 RLock 机制对比了下,记录一波,别踩我踩过…...
【深尚想】TPS54618CQRTERQ1汽车级同步降压转换器电源芯片全面解析
1. 元器件定义与技术特点 TPS54618CQRTERQ1 是德州仪器(TI)推出的一款 汽车级同步降压转换器(DC-DC开关稳压器),属于高性能电源管理芯片。核心特性包括: 输入电压范围:2.95V–6V,输…...