如何在 Windows 上的 Ubuntu 18.04 中运行而不生成终端?

如何在 Windows 上的 Ubuntu 18.04 中运行而不生成终端?

我在 Windows 10 机器上安装了 Ubuntu 18.04 LTS。看起来像这样

和这个

只是为了让我们达成共识。

现在,如何在不打开终端的情况下在 bash/ubuntu 下运行应用程序?即无 GUI。即无头。

我想使用 Windows 任务计划程序运行它

现在它总是在晚上 9 点弹出一个窗口,这非常烦人。

我甚至找不到 Ubuntu 18.04 的 .exe,我猜它现在是通过应用商店安装的。我可以从 cmd.exe 运行旧的旧版安装,

% bash.exe -c "lsb_release -a"                                                                      No LSB modules are available.                                                                                           Distributor ID: Ubuntu                                                                                                  Description:    Ubuntu 16.04.6 LTS                                                                                      Release:        16.04                                                                                                   Codename:       xenial       

这对我没什么帮助,因为调度程序也会为此弹出一个窗口。

答案1

我将在几个小时内发现这是否真的有效,但我认为它应该有效。

创建一个这样的窗口任务:

我正在运行的脚本如下所示:

C:\runHidden.vbs C:\Users\Mark\AppData\Local\Microsoft\WindowsApps\ubuntu1804.exe -c "sudo /usr/local/bin/borgbackup.sh 2>&1 | sudo tee -a /var/log/borg.log | sudo /usr/local/bin/mailgun.sh 2>&1 | sudo tee -a /var/log/mailgun.log"

第一个参数是我将在下面粘贴的脚本,第二个参数是任意的Linux 发行版你想跑。

runHidden.vbs是:

' Simple command-line help.
select case WScript.Arguments(0)
case "-?", "/?", "-h", "--help"
  WScript.echo "Usage: runHidden executable [...]" & vbNewLine & vbNewLine & "Runs the specified command hidden (without a visible window)."
  WScript.Quit(0)
end select

' Separate the arguments into the executable name
' and a single string containing all arguments.
exe = WScript.Arguments(0)
sep = ""
for i = 1 to WScript.Arguments.Count -1
  ' Enclose arguments in "..." to preserve their original partitioning.
  args = args & sep & """" & WScript.Arguments(i) & """"
  sep = " "
next

' Execute the command with its window *hidden* (0)
WScript.CreateObject("Shell.Application").ShellExecute exe, args, "", "open", 0

信用管理0. 还可以找到这里现在可能还有十几个其他地方。

更新:从 cmd.exe 运行时效果很好,但从任务计划程序运行时似乎什么都没做。它显示“正在运行”,但日志文件中没有任何记录,所以我不确定。如果您找到明确的答案,请在评论中告诉我。

答案2

找到了更好的解决方案。没有黑客攻击或搞怪行为。

只需使用wsl。您甚至可以使用 以 root 身份运行应用程序-u root

在此处输入图片描述

相关内容