如何让Windows 10 WSL中的Ubuntu环境持久化后台进程运行?
延长WSL Ubuntu 16.04实例生命周期的方法
我之前在使用WSL1(你的Ubuntu 16.04版本属于WSL1范畴)时也遇到过一模一样的问题——关闭最后一个终端窗口后,整个WSL实例直接被终止,后台进程全挂,每次新开终端都像重启了一遍。下面这些方法亲测有效,不用一直挂着终端窗口:
方法1:后台启动一个持久化轻量进程
WSL1的终止逻辑是没有活跃终端会话时就会关闭整个实例,哪怕有后台进程也留不住。所以我们可以在Windows端启动一个长期运行的轻量进程,让WSL实例一直保持活跃:
- 打开Windows的PowerShell或命令提示符(CMD)
- 运行以下命令:
这个命令会启动你的Ubuntu实例,并让wsl -d Ubuntu-16.04 sleep infinitysleep进程在后台无限运行,这样即使关闭所有终端窗口,WSL实例也不会被终止。
如果想让这个进程开机自动启动,可以:
- 创建一个
.bat文件,内容就是上面的命令 - 把这个
.bat文件放到Windows的启动文件夹里(路径:C:\Users\<你的用户名>\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)
要检查WSL实例是否在运行,用这个命令:
wsl --list --running
如果需要手动终止实例,运行:
wsl --terminate Ubuntu-16.04
方法2:升级到WSL2(推荐长期解决方案)
WSL2的终止逻辑和WSL1完全不同:只要实例中有任何进程在运行,不管有没有终端窗口,实例都会保持活跃。也就是说,你启动ssh-agent这类后台进程后,即使关闭所有终端,进程也会继续运行,下次打开终端直接就能用。
升级步骤很简单:
- 确保你的Windows 10版本在2004及以上(设置→系统→关于查看版本号)
- 打开PowerShell,运行以下命令启用WSL2功能:
wsl --set-version Ubuntu-16.04 2 - 等待转换完成即可,之后你的WSL实例就会采用WSL2的运行模式,再也不会因为关闭终端而终止后台进程了。
方法3:使用screen或tmux(适合临时保留会话)
如果你只是想临时保留某个终端会话的进程(比如正在运行的脚本、ssh连接),可以用screen或tmux这类终端复用工具:
- 安装工具:
sudo apt install screen(或tmux) - 启动会话:
screen(或tmux) - 暂时离开会话:按
Ctrl+A然后D(screen),或者Ctrl+B然后D(tmux) - 下次打开终端后恢复会话:
screen -r(或tmux attach)
不过要注意,这个方法只能保留会话进程,如果关闭所有终端导致WSL实例终止,那这些会话还是会消失,所以它更适合配合前面的方法一起用。
内容的提问来源于stack exchange,提问作者user1344
相关产品推荐
相关产品推荐

