我在WSL 设置文件中添加了这些行
C:\Users\reynadan\.wslconfig
[boot]
command=bash /home/reynadan/scripts/startup.sh/etc/wsl.conf
[boot]
command=bash /home/reynadan/scripts/startup.sh/home/reynadan/scripts/startup.sh
#!/bin/bash
# Run wsl-vpnkit if not already connected or running
currentlyRunningWsl=$(wsl.exe -l --running | iconv -f UTF16 -t UTF8 | grep wsl-vpnkit | wc -l)
if [[ $currentlyRunningWsl -eq 0 ]]; then
wsl.exe -d wsl-vpnkit service wsl-vpnkit start
fi
# Start Docker daemon automatically when logging in if not running.
RUNNING=`ps aux | grep dockerd | grep -v grep`
if [ -z "$RUNNING" ]; then
sudo dockerd > /dev/null 2>&1 &
disown
fi
NOW=$(date)
echo WSL booted at $(/bin/date +'%Y-%m-%d %H:%M:%S') >> /home/reynadan/wslBootHistory.txt
echo 'startup lanched'我关闭了wsl --shutdown,等待了超过8秒才再次运行它,但是/home/reynadan/wslBootHistory.txt仍然是空的,所以docker没有运行。
如何确保WSL在启动时运行我的脚本?
发布于 2022-12-02 12:20:43
正如注释中提到的,您在Windows 10上。然而,注释中的信息有点过时-- boot.command功能现在在Windows 10上工作,但是您需要安装Windows 10和WSL的绝对最新版本(包括可选更新)。
首先,确认您的系统正在运行11月的“累积更新预览”。如果您是,那么您的UBR (更新-构建-修订)将在2311或更高。来自PowerShell:
(Get-ComputerInfo).WindowsUBR如果低于2311,则:
这样,您现在就可以用一个简单的方法更新到WSL的Store版本了:
wsl --update
wsl --version更新后,您应该访问:
WSL version: 1.0.0.0..。或者晚些时候。
此时建议重新启动,使所有功能都能正常工作,但并非严格要求。
此时,您应该可以访问/etc/wsl.conf的[boot].command特性。
如果由于某种原因,它仍然不起作用,那么我建议将脚本从等式中删除以排除故障。尝试类似于command=service cron start的内容,看看重新启动WSL时是否启动Cron服务。
请注意,此新更新还为Windows 10用户带来了许多其他新的WSL2功能,包括:
--mount驱动器和分区(包括带有其他文件系统甚至原始分区的驱动器和分区)的参数。https://stackoverflow.com/questions/74654395
复制相似问题