在Windows上有类似于nohup的命令吗?

43

我想要像这样运行一个Java jar文件:

java -jar spider.jar

如何在Windows后台运行它?

就像Linux上这样:

nohup java -jar spider.jar > /var/tmp/spider.log 2>&1 &

我仍在寻找答案。相关问题:https://dev59.com/lnI_5IYBdhLWcg3wEe1u - Basilevs
5个回答

33

5
使用"start javaw -jar spider.jar"命令,将javaw和start组合在一起,可以将最小化窗口去除。 - prembhaskal
有没有类似于PowerShell的模拟器? - Woland

30

在Windows系统中,一个进程在其父进程被终止后也被终止并不是正常情况(这与Unix-like系统通常的做法不同)。因此,没有像nohup这样的直接必要性。如果您想避免与控制台窗口相关联,可以使用javaw,但重定向将不起作用。


1
请参见https://dev59.com/1XI-5IYBdhLWcg3wJEwK。 - skaffman
6
有一种情况需要Windows版本的nohup:使用Windows的"start"命令启动的进程会在您注销时被终止。请注意不要改变原意。 - Anthony
1
@Anthony:当您注销时,属于您的用户的所有进程都将被终止。请注意,“start”是“cmd.exe”的命令,而不是Windows的命令。 - Joey
@Joey 但重定向不起作用,你是什么意思? - Vikash
1
@Vikash:javaw 是一个 GUI 程序,它没有默认的控制台界面。因此,您无法重定向标准流,如 stdout(标准输出流)。 - Joey
在某些 Windows 10 版本中: c:>which start C:/PROGRA2/INTEGR1/Toolkit/mksnt/start.exe - Alexander Stohr

7

要实现nohup的行为(比如在微服务、分析工具、服务器批处理任务等场景下,进程在注销后仍然运行),唯一的方法就是将带有start javaw -jar ...内容的.bat文件作为服务或计划任务运行。


1
将以下代码保存到 nohup.vbs 文件中,并将该文件所在目录添加到 PATH 环境变量中。
Set args=Wscript.Arguments
Set ws=CreateObject("wscript.shell")
ws.Run args(0),0,true

然后,运行:
nohup "java -jar spider.jar > /var/tmp/spider.log"

请注意,您应该引用完整的命令和重定向。

这个关键字是什么意思:“true”? - Alexander Stohr
2
@AlexanderStohr 抱歉,那是一个拼写错误。 - lyh543

-2
在Windows上,在命令提示符或终端中运行以下命令:
nohup (需要运行的文件) > (需要保存日志的文件) 2>&1
例如: nohup ./bin/windows/kafka-server-start.bat config/server.properties > ./MyKafka.log 2>&1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接