From b789cb74fbc1560416b24e6bea329f5ecaa184b6 Mon Sep 17 00:00:00 2001 From: xiaoqidun Date: Tue, 22 Nov 2022 14:00:07 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E5=AE=9E=E7=8E=B0=E5=8A=9F=E8=83=BD):=20?= =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 6 +++++- wslkd.go | 35 ++++++++++++++++++++++++++++++++++- 2 files changed, 39 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d20b90e..9d01c27 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ # WslKD -Windows Subsystem for Linux Keep Daemon \ No newline at end of file +Windows Subsystem for Linux Keep Daemon + +# 简要说明 + +wsl在没有使用的情况下守护进程会被关闭,本工具在指定的wsl发行版打开一个shell为wsl守护进程保活。 diff --git a/wslkd.go b/wslkd.go index 7905807..8fa5a23 100644 --- a/wslkd.go +++ b/wslkd.go @@ -1,5 +1,38 @@ package main -func main() { +import ( + "flag" + "github.com/xiaoqidun/gowsl" + "log" + "strings" + "sync" +) +func main() { + var d string + flag.StringVar(&d, "d", "Debian", "distribution") + flag.Parsed() + waitGroup := &sync.WaitGroup{} + distroList := strings.Split(d, ",") + for i := 0; i < len(distroList); i++ { + distro := strings.TrimSpace(distroList[i]) + if distro == "" { + continue + } + waitGroup.Add(1) + go exec(waitGroup, distro) + } + waitGroup.Wait() +} + +func exec(done *sync.WaitGroup, distro string) { + defer done.Done() + if !gowsl.Registered(distro) { + log.Printf("%v does not exist\n", distro) + return + } + cmd := gowsl.Command(distro, "/bin/bash") + if err := cmd.Run(); err != nil { + log.Printf("%v cmd run err: %v", distro, err) + } }