当前位置: 首页 > news >正文

解决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的要求:

  1. Windows 版本: WSL 2 是从 Windows 10 版本 1903 及更高版本开始引入的。较早的 Windows 版本可能无法使用 WSL 2。

  2. 64 位系统: WSL 2 只支持 64 位的 Windows 操作系统。确保你的计算机硬件和操作系统都是 64 位的。

  3. 虚拟化支持: 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结合使用&#xff0c;实现降级和熔断。 OpenFeign与Hystrix结合使用 使用OpenFeign需要引入OpenFeign的依赖&#xff1a; <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-sta…...

软件工程(十) 需求工程之需求开发与管理

前面我们学习到了需求工程的概念与分类,我们知道了需求工程主要分为需求开发和需求管理,但是没有说明到底该如何开发需求,有哪些方法去开发需求。到底该如何进行需求管理,又有哪些进行需求管理的方式。具体是如何去做的。下面我们将会详细进行描述。 1、需求开发 1.1、需…...

C++网狐服务器引入开源日志库spdlog

很多人对日志库不以为然&#xff0c;包括网狐这种十几年的公司都不重视&#xff0c;其实日志库记录的东西能在线上出问题时高效解决&#xff0c;特别是别人写的东西&#xff0c;人又走了&#xff0c;出了问题&#xff0c;还可以用日志分析快速解决。要是没有日志记录&#xff0…...

【C++】—— c++11之智能指针

前言&#xff1a; 本期&#xff0c;我们将要学习的是在c11中新提出的概念——异常指针&#xff01; 目录 &#xff08;一&#xff09;智能指针的引入 &#xff08;二&#xff09;内存泄漏 1、什么是内存泄漏&#xff0c;内存泄漏的危害 2、内存泄漏分类&#xff08;了解&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”概念&#xff0c;并了解它们如何以流畅和无缝的方式实现父子组件之间的通信。 Vue中的emits是什…...

文件操作 黑马教程(04)

1.文本文件 写文件 #include "iostream" #include "fstream" using namespace std; /** 文件操作** 程序运行时产生的数据都属于临时数据&#xff0c;程序一旦结束都会被释放* 通过文件可以将数据持久化* C中对文件操作需要包含头文件<fstream>** 文…...

Jmeter(二十七):BeanShell PostProcessor跨线程全局变量使用

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

手写表格OCR识别并与大模型ChatGPT交互?

这是一张手写表格&#xff0c;姓名做了脱敏处理。现在需要对其识别&#xff0c;并分析。 直接粘贴剪切板中的表格原始图片&#xff0c;在网页中ctlV进行识别。识别结果列用分隔符|&#xff0c;可以直接粘贴到excel&#xff0c;进行数据列分隔。为了美观期间&#xff0c;也可以用…...

使用 v-for 指令和数组来实现在 Uni-app 中动态增减表单项并渲染多个数据

在 data 中定义一个数组&#xff0c;用于存储表单项的数据&#xff1a; data() {return {formItems: []} } 在模板中使用 v-for 指令渲染表单项&#xff1a; <template><div><div v-for"(item, index) in formItems" :key"index"><…...

xml

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

Java中的动态代理(JDK Proxy VS CGLib)

前言 动态代理可以说是Java基础中一个比较重要的内容&#xff0c;这块内容关系到Spring框架中的AOP实现原理&#xff0c;所以特别写了一篇作为个人对这块知识的总结。这部分内容主要包括&#xff1a;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-跳跃游戏-贪心

题目描述&#xff1a; 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 解…...

【USRP】调制解调系列4:BPSK、QPSK、8PSK、OQPSK、Pi/4DQPSK,基于labview的实现

PSK Phase Shift Keying – 相移键控 在某些调制解调器中用于数据传输的调制系统&#xff0c;在最简单的方式中&#xff0c;二进制调制信号产生0和1。载波相位来表示信号占和空或者二进制1和O。对于有线线路上较高的数据传输速率&#xff0c;可能发生4个或8个不同的相移&…...

深入探讨梯度下降:优化机器学习的关键步骤(一)

文章目录 &#x1f340;引言&#x1f340;什么是梯度下降&#xff1f;&#x1f340;损失函数&#x1f340;梯度(gradient)&#x1f340;梯度下降的工作原理&#x1f340;梯度下降的变种&#x1f340;随机梯度下降&#xff08;SGD&#xff09;&#x1f340;批量梯度下降&#xf…...

layui框架学习(40:数据表格_主要事件)

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

kotlin实现猜数游戏

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

多智能体AI交易系统技术落地实践:从架构设计到生产部署

多智能体AI交易系统技术落地实践&#xff1a;从架构设计到生产部署 【免费下载链接】TradingAgents-CN 基于多智能体LLM的中文金融交易框架 - TradingAgents中文增强版 项目地址: https://gitcode.com/GitHub_Trending/tr/TradingAgents-CN 在金融科技快速发展的今天&am…...

iOS内购避坑指南:从沙盒测试到正式上线的完整流程(附常见错误解决方案)

iOS内购全流程实战&#xff1a;从沙盒测试到生产环境的避坑手册 当你第一次集成iOS内购&#xff08;IAP&#xff09;时&#xff0c;是否遇到过这些场景&#xff1f;用户付款后商品迟迟未到账、沙盒测试时收据验证总是失败、审核阶段一切正常但上线后出现大量丢单...这些问题往往…...

终极指南:如何为Muzei Live Wallpaper配置GitHub Actions自动化构建与测试

终极指南&#xff1a;如何为Muzei Live Wallpaper配置GitHub Actions自动化构建与测试 【免费下载链接】muzei Muzei Live Wallpaper for Android 项目地址: https://gitcode.com/gh_mirrors/mu/muzei Muzei Live Wallpaper是一款备受欢迎的Android动态壁纸应用&#xf…...

从‘巡逻’到‘狂暴’:手把手用Unity行为树节点拼出一个有灵魂的BOSS战AI

从‘巡逻’到‘狂暴’&#xff1a;手把手用Unity行为树节点拼出一个有灵魂的BOSS战AI 想象一下&#xff0c;你正在玩一款动作游戏&#xff0c;面对一个看似普通的BOSS。起初它只是机械地挥舞武器&#xff0c;但随着战斗深入&#xff0c;它开始召唤小弟、释放范围技能&#xff0…...

YOLOv8鹰眼检测实战:无人机巡检场景下的目标识别应用

YOLOv8鹰眼检测实战&#xff1a;无人机巡检场景下的目标识别应用 1. 无人机巡检的视觉挑战与解决方案 在电力线路巡查、交通监控、农业勘测等场景中&#xff0c;无人机正成为不可或缺的空中巡检工具。然而传统人工分析航拍图像的方式存在效率低下、漏检率高、响应延迟等问题。…...

Audio2Face深度解析:音频驱动面部动画的技术架构与实战指南

Audio2Face深度解析&#xff1a;音频驱动面部动画的技术架构与实战指南 【免费下载链接】FACEGOOD-Audio2Face http://www.facegood.cc 项目地址: https://gitcode.com/gh_mirrors/fa/FACEGOOD-Audio2Face 在虚拟数字人快速发展的今天&#xff0c;如何让虚拟角色拥有自然…...

从ChatGPT到文心一言:揭秘大语言模型背后的Decoder-only架构设计

从ChatGPT到文心一言&#xff1a;大语言模型的Decoder-only架构设计哲学 当ChatGPT在2022年末掀起全球AI对话风暴时&#xff0c;一个关键设计选择引起了技术界的广泛讨论&#xff1a;为什么这些最先进的大语言模型都选择了纯Decoder架构&#xff1f;这背后隐藏着怎样的技术哲学…...

IndexTTS 2.0优化指南:如何选择参考音频,获得最佳克隆效果

IndexTTS 2.0优化指南&#xff1a;如何选择参考音频&#xff0c;获得最佳克隆效果 1. 引言&#xff1a;为什么参考音频如此重要&#xff1f; 在语音合成领域&#xff0c;参考音频就像是一把钥匙&#xff0c;决定了最终生成声音的质量和相似度。IndexTTS 2.0作为一款零样本音色…...

用Asian Beauty Z-Image Turbo做古风头像:简单三步生成独一无二的东方美学作品

用Asian Beauty Z-Image Turbo做古风头像&#xff1a;简单三步生成独一无二的东方美学作品 想象一下&#xff0c;你的社交媒体头像不再是一张普通的自拍或卡通形象&#xff0c;而是一幅充满东方韵味的古风艺术作品——可能是唐代仕女的温婉&#xff0c;宋代文人的儒雅&#xf…...

从代码到部署:手把手复现CenterPoint(PyTorch版)在KITTI数据集上的完整流程

从零实现CenterPoint&#xff1a;KITTI数据集3D目标检测全流程实战指南 为什么选择CenterPoint进行3D目标检测&#xff1f; 在自动驾驶和机器人感知领域&#xff0c;3D目标检测一直是核心技术难题。传统基于锚框&#xff08;Anchor-based&#xff09;的方法在处理旋转物体时表现…...