Win10及WSL2使用中的小trick

记录一下最近使用win10过程中积累的一些经验,后续有新的idea再来补充。

Win10 内存优化

  1. 尽量不要点开企业微信里的网盘(存在内存泄漏),可以直接在文件夹里找到,或者按照之前的教程把网盘加入索引。

  2. 如果使用了自带的杀毒软件,在病毒和威胁防护的设置里增加排除项,这个因人而异了。

  3. 关闭或者设定Windows Search(参考上篇文章)

  4. 在sublime text 3里设置排除文件夹,比如这样:

    1
    "folder_exclude_patterns": ["node_modules", ".svn", ".git", ".hg", "CVS"]
  5. 使用监控软件,发现异常及时处理。我用的是zhongyang219/TrafficMonitor,在任务栏可以很方便的监视。

  6. 使用Edge的话在设置-系统-节约资源中打开使用标签页休眠功能节约资源。Chrome安装The Great Suspender。

  7. 充分利用文档、下载文件夹,桌面当作临时文件夹,随时清理,避免冗余文件。

  8. 使用自带邮件系统,这样在不打开邮件程序的情况下也能及时收到通知,设置提醒也方便。

WSL2 优化

  1. 锁定输入法。在设置中搜索输入法,勾选允许我为每个应用窗口使用不同输入法,这样在Terminal中不会莫名其妙切换回中文。甚至在输入法设置里把英文设置为默认。

  2. 设置端口转发,方便局域网访问wsl上的服务。这里参考CzBiX的方法,下载WSLHostPatcher。首先启动WSL2,启动nginx,观察资源监视器->网络->侦听端口中的wslhost.exe一栏,地址列应该是IPv4 环回。此时浏览器可以访问localhost,但其他机器通过局域网无法访问。运行WSLHostPatcher,重启nginx服务(重要),再次观察地址列,如果变成未指定 IPv4,恭喜你,可以用手机试试打开win10的ip,magic出现。停止转发再Powershell中运行wsl --shutdown

  3. 设置Proxy,参考上篇文章。

  4. 设置快捷启动Nginx + PHP + Mariadb,上脚本,用root身份保存为lnmp.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#!/bin/bash
opt=$1

if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi

proc=( "nginx" "mariadb" "php7.4-fpm" )
comm=( "nginx" "mariadbd" "php-fpm7.4" )
for i in "${!comm[@]}"; do
ps cax | grep ${comm[i]} > /dev/null
if [ $? -eq 0 ]; then
if [ "$opt" = "stop" ]
then service ${proc[i]} stop
if [ $? -eq 0 ]; then
echo "${comm[i]} stop successfully"
else
echo "${comm[i]} stop fail!"
fi
else
echo "${comm[i]} is running"
fi
else
if [ "$opt" = "start" ]
then service ${proc[i]} start
if [ $? -eq 0 ]; then
echo "${comm[i]} start successfully"
else
echo "${comm[i]} start fail!"
fi
else
echo "${comm[i]} is NOT run"
fi
fi
done

或者是lamp.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#!/bin/bash
opt=$1

if [ "$EUID" -ne 0 ]
then echo "Please run as root"
exit
fi

for i in apache2 mariadb; do
ps cax | grep $i > /dev/null
if [ $? -eq 0 ]; then
if [ "$opt" = "stop" ]
then service $i stop
if [ $? -eq 0 ]; then
echo "$i stop successfully"
else
echo "$i stop fail!"
fi
else
echo "$i is running"
fi
else
if [ "$opt" = "start" ]
then service $i start
if [ $? -eq 0 ]; then
echo "$i start successfully"
else
echo "$i start fail!"
fi
else
echo "$i is NOT run"
fi
fi
done

注意要用sudo运行,参数:start启动服务;stop终止服务;其他查询服务。为什么不设置自启动?额,个人习惯吧

  1. Windows defender 排除vmmem进程,还有Debian安装文件夹,一般在C:\Users\xxx\AppData\Local\Packages\中。

参考

解决局域网无法访问 WSL2 端口的问题 - 疯狂的盒子 (czbix.com)