我在 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
更新:从 cmd.exe 运行时效果很好,但从任务计划程序运行时似乎什么都没做。它显示“正在运行”,但日志文件中没有任何记录,所以我不确定。如果您找到明确的答案,请在评论中告诉我。
答案2
找到了更好的解决方案。没有黑客攻击或搞怪行为。
只需使用wsl
。您甚至可以使用 以 root 身份运行应用程序-u root
。