wsl2安装启动mysql
wsl2安装启动mysql
启动
1 | sudo /etc/init.d/mysql start |
配置文件
1 | sudo cat /etc/mysql/debian.cnf |
用户名密码就在这
1 | [client] |
复制到用户名文件夹可以免输入用户名密码
1 | sudo cp /etc/mysql/debian.cnf .my.cnf |
要改变文件的所有者为用户
1 | sudo chown cgz .my.cnf |
遇到报错
1 | ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) |
问题就是没启动
运行上面的启动命令就行
1 | root 的密码: 123456 |
1 | ALTER USER 'root'@'localhost' IDENTIFIED BY '123456'; |
1 | CREATE USER 'mufeng'@'%' IDENTIFIED BY '123456'; |
wsl的代理如何与主机共享
wsl的代理如何与主机共享
需要拉取docker镜像,但是curl无效
设置配置文件.wslconfig后仍然ping不通
ping,ping的是ip,用的是icmp协议,在osi七层模型中用的是第三层(网络层)
其实是curl google.com
直接得到的就是
1 | <HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8"> |
用浏览器访问一下就知道了
1 | curl https://www.google.com.hk/ |
这个才是正确的
在VSCode中打开WSL2项目时,Copilot扩展没有响应
在VSCode中打开WSL2项目时,Copilot扩展没有响应
添加setting.json
1 | "remote.extensionKind": { |
VSCode で WSL2 プロジェクトを開くと Copilot 拡張機能が応答しない #copilot - Qiita
github - Copilot is not working is WSL remote connection? - Stack Overflow
在使用wsl时,突然不能用code打开vscode
在使用wsl时,突然不能用code打开vscode
加一行配置环境变量可以解决
1 | export PATH="$PATH:/mnt/c/Users/86147/AppData/Local/Programs/Microsoft VS Code/bin" |
但是不够优雅
在 /etc/wsl.conf 中明确追加 PATH 配置
1 | [interop] |
设置完以上方法后,发现还是一样因为本来就默认共享环境变量
发现vscode文件路径名称有空格
wsl执行
1 | echo $PATH |
出现
1 | /mnt/c/Users/86147/AppData/Local/Programs/Microsoft:VS:Code/bin |
空格被识别成分割
所以可能是更新后路径名出现了这个bug导致无法正常识别环境变量
解决方案是用短路径
Windows 文件系统有短路径名(8.3 格式)支持,通常无空格,可以兼容在 WSL 和 Windows 下使用。你可以先找到短路径名,然后将其添加到环境变量中。
获取短路径名: 打开 Windows 命令提示符(cmd),输入以下命令以获取
Microsoft VS Code文件夹的短路径名:1
2
3cmd
dir "C:\Users\86147\AppData\Local\Programs\" /x你可能会看到一行输出类似:
1
03/12/2024 09:00 AM <DIR> MICRO~1 Microsoft VS Code
MICRO~1就是此文件夹的短路径名。用这个名字可以避免空格问题。将短路径名添加到 PATH: 在 Windows 的环境变量设置中,将 VS Code 的路径设置为短路径格式。例如,将路径设置为:
1
C:\Users\86147\AppData\Local\Programs\MICRO~1\bin
在 WSL 中,这个路径会自动被映射到
/mnt/c/Users/86147/AppData/Local/Programs/MICRO~1/bin,WSL 能正确解析。
安装虚拟python环境,采用轻量化的方案
安装虚拟python环境,采用轻量化的方案
创建一个轻量化的 Python 虚拟环境可以通过 venv 或 virtualenv 实现。这里我将介绍使用 venv 的方法,因为它是 Python 自带的模块,并且通常更简单。以下步骤适用于基于 Debian 的 Linux 发行版(例如 Ubuntu 和 WSL 的 Ubuntu 版本)。
1. 安装 Python 和 venv
确保你安装了 Python 和 venv 模块。在大多数情况下,Python 会默认包含 venv 模块,但你可以通过以下命令确认:
1 | sudo apt update |
2. 创建虚拟环境
选择一个目录来存放你的虚拟环境,例如在你的项目文件夹中。
1 | cd /path/to/your/project |
将 myenv 替换为你希望给虚拟环境起的名字。
3. 激活虚拟环境
激活虚拟环境,以便你在这个环境中安装的任何 Python 包都不会影响系统的全局 Python 设置。
1 | source myenv/bin/activate |
当虚拟环境激活后,你的命令行提示符通常会显示环境名称,例如 (myenv)。
4. 安装所需的包
在激活的虚拟环境中,你可以使用 pip 安装任何你需要的 Python 包。例如,安装 requests 库:
1 | pip install requests |
5. 清理不必要的包
如果你希望保持环境轻量化,可以在使用完后移除不再需要的包。可以使用以下命令检查已安装的包:
1 | pip list |
并使用以下命令卸载不需要的包:
1 | pip uninstall package_name |
6. 退出虚拟环境
完成工作后,可以通过以下命令退出虚拟环境:
1 | deactivate |
总结
通过以上步骤,你可以创建一个轻量化的 Python 虚拟环境,并在其中安装所需的包。venv 提供了一个相对简单的方式来管理项目所需的依赖,同时保持系统 Python 环境的干净。在项目开发和测试中使用虚拟环境是良好的实践。
清理wsl磁盘空间
清理wsl磁盘空间
先以管理员身份运行powershell
1 | diskpart |
查看wsl发行版本
1 | wsl -l -v |
1 | NAME STATE VERSION |
查找 Linux 发行版的 .vhdx 文件和目录路径,
请打开 PowerShell 并使用以下脚本,将 <distribution-name> 替换为实际的发行版名称:
1 | (Get-ChildItem -Path HKCU:\Software\Microsoft\Windows\CurrentVersion\Lxss | Where-Object { $_.GetValue("DistributionName") -eq '<Ubuntu-22.04>' }).GetValue("BasePath") + "\ext4.vhdx" |
结果将显示类似于 %LOCALAPPDATA%\Packages\<PackageFamilyName>\LocalState\<disk>.vhdx 的路径。 例如:
1 | C:\Users\86147\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu22.04LTS_79rhkp1fndgsc\LocalState\ext4.vhdx |
这是与你列出的 Linux 发行版关联的 ext4.vhdx 文件的路径。
先关掉
1 | wsl --shutdown |
压缩磁盘文件
1 | //4-3 依次输入下列命令 |
显示与此虚拟磁盘关联的详细信息,包括虚拟大小,表示当前分配给 VHD 的大小上限
1 | detail vdisk |
扩展空间
如何管理 WSL 磁盘空间 | Microsoft Learn
清理docker
Windows WSL2 占用磁盘空间清理释放_wsl占用空间太大-CSDN博客
1 | docker system prune |
连接问题
1 | Socket error Event: 32 Error: 10053. |
用手机连热点遇到的问题
推测不是负载过高导致的
端口:22,用手机和电脑上xshell连接有问题
刚进的时候可以,但是输入两到三行命令后会突然退出显示以上报错
排除xshell问题,因为手机端也不能正常连接
猜想排除网络问题,因为用4g网络,5g网络,wifi,都会出现以上情况
不是ip冲突导致的
输入last命令后
1 | Last login: Wed Jun 26 00:23:36 2024 from 223.104.40.248 |
更换ip后依然不行,停止后重启暂时修复
启动机器人后突然挂掉,应该是负载问题
真相了
连接校园网就没问题
应该是手机热点导致的ip冲突
彻底真相了
1 | lastb |
随便截取一些记录
1 | user ssh:notty 43.134.171.154 Tue Jun 25 16:03 - 16:03 (00:00) |
看1panel的ssh登录日志,发现有两千多条和我无关的ip尝试登录,估计是被挤占的
配置zsh遇到的问题
配置zsh遇到的问题
今天打开wsl,发现外观莫名其妙全变了,修改powershell的外观设置后,发现zsh的命令行颜色怎么改还是舒服,文件夹是蓝底白字的,想修改成蓝底黑字,网上搜索之后发现并没有关于配置文件的教程
我就又去查找了我安装的主题p10k,找到了这篇博客,powerlevel10k 颜色和图标的自定义设置-CSDN博客
打开~/.p10k.zsh搜索关键词DIR
1 | ############################[ dir: 当前目录 ]########################### |
注释交给gpt翻译了一下,修改即可
按照上面教程的方法,颜色代码可以输入以下命令查看
1 | for code ({000..255}) print -P -- "$code: %F{$code}最左侧三位数字即颜色值Text Color%f" |
每次修改配置后一定要输入
1 | source ~/.p10k.zsh |
修改之后遇到问题,发现缩短后的锚点文件夹不能加粗显示,修改配置文件也不行。
经检查发现是powershell外观配置问题,把外观->文本格式强调文本格式部分设置成加粗字体即可
还有一个意外发现就是在复制上面配置文件时,发现vim不能和windows共享剪贴板
于是搜索得到以下解决方案
clipboard - How to copy/paste from Vim in WSL - Stack Overflow
1.按v进入可视模式,滑动鼠标或者输入行数选中
2.按:,输入以下命令即可
1 | :'<,'>w !clip.exe |
如果要复制全部文本则直接输入该命令
1 | :w !clip.exe |
10-并发控制同步
10-并发控制:同步 (2)
可以用互斥锁来实现同步
在约定的状态上锁,然后同时解锁
(mutex库规定不能在一个线程获得锁,在另一个线程释放锁)
初始时都上锁,等待就是请求锁,
(信号量)P是取,V是放
拓展互斥锁,多个
happens-before
acquire-release
口袋和球,如果是一个球,那就是互斥锁
适用于可计数的资源
可以创建n个口袋
信号量用来实现生产者消费者
哲学家吃饭问题
刚开始的实现,简单使用信号量表示叉子,会出现死锁,即哲学家都拿起左手边的叉子或右手边的叉子,然后桌子上没有叉子,也没人放下
而用条件变量可以简单解决这个问题(哲学家会同时拿起或放下两只手的叉子)
信号量解决方法:
赶走桌子上的一个人,哲学家取到一个球才能上桌吃饭,吃完饭放回
但是问题更复杂,要求更多就很难了
给叉子编号也行,
条件变量是万能模板
用信号量实现条件变量
该例子是一个生产者一个消费者,缓冲区是1,如果缓冲区很大这个问题就会被忽视了,如果生产者和消费者数量增加,那么死锁概率也会增加
1 | //错误的 |
问题
1 | //Producer: Broadcast |
现在的问题是,为什么前一个线程执行完的broadcast后,新建的produce线程为什么球会取走,不应该是执行完一个线程再执行同一种线程吗,而且例子中只有一个生产者和一个消费者,缓冲区大小为1
1 | Producer: begin, execution count: 14397 |


