首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用WSL配置文件在WSL启动时运行命令?

如何使用WSL配置文件在WSL启动时运行命令?
EN

Stack Overflow用户
提问于 2022-12-02 10:38:21
回答 1查看 36关注 0票数 1

我在WSL 设置文件中添加了这些行

C:\Users\reynadan\.wslconfig

代码语言:javascript
复制
[boot]
command=bash /home/reynadan/scripts/startup.sh

/etc/wsl.conf

代码语言:javascript
复制
[boot]
command=bash /home/reynadan/scripts/startup.sh

/home/reynadan/scripts/startup.sh

代码语言:javascript
复制
    #!/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在启动时运行我的脚本?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-12-02 12:20:43

正如注释中提到的,您在Windows 10上。然而,注释中的信息有点过时-- boot.command功能现在在Windows 10上工作,但是您需要安装Windows 10和WSL的绝对最新版本(包括可选更新)。

首先,确认您的系统正在运行11月的“累积更新预览”。如果您是,那么您的UBR (更新-构建-修订)将在2311或更高。来自PowerShell:

代码语言:javascript
复制
(Get-ComputerInfo).WindowsUBR

如果低于2311,则:

  • 首先,确保您的系统是完全最新的。
  • 转到“设置”,->检查更新,然后按下“检查更新”按钮。
  • 如果您已经在Windows 10上完全更新(但运行量仍然小于UBR 2311),您应该看到"2022-11基于x64系统(KB5020030)的Windows1022H2版本累积更新预览“可作为可选更新。安装它,并在提示时重新启动。

这样,您现在就可以用一个简单的方法更新到WSL的Store版本了:

代码语言:javascript
复制
wsl --update
wsl --version

更新后,您应该访问:

代码语言:javascript
复制
WSL version: 1.0.0.0

..。或者晚些时候。

此时建议重新启动,使所有功能都能正常工作,但并非严格要求。

此时,您应该可以访问/etc/wsl.conf[boot].command特性。

如果由于某种原因,它仍然不起作用,那么我建议将脚本从等式中删除以排除故障。尝试类似于command=service cron start的内容,看看重新启动WSL时是否启动Cron服务。

请注意,此新更新还为Windows 10用户带来了许多其他新的WSL2功能,包括:

  • 系统支持
  • WSLg:在WSL2中运行Linux应用程序的能力
  • 添加其他--mount驱动器和分区(包括带有其他文件系统甚至原始分区的驱动器和分区)的参数。
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74654395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档