【问题标题】:What's the nohup on Windows?Windows 上的 nohup 是什么?
【发布时间】:2011-03-23 20:43:46
【问题描述】:

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

java -jar spider.jar

如何在Windows上后台运行?

像这样在 Linux 上:

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

【问题讨论】:

标签: windows nohup


【解决方案1】:

在 Windows 上,一个进程在其父进程被杀死后终止是不正常的(就像 Unix-likes 一样)。因此,像nohup 这样的东西没有直接的必要性。如果你想避免与之关联的控制台窗口,你可以使用javaw,但是重定向不起作用,那么。

【讨论】:

  • 有一种情况,你需要一个相当于 nohup 的 windows:当你注销时,用 windows "start" 命令启动的东西会被杀死。
  • @Anthony:当您注销时,属于您用户的所有进程都会被杀死。另请注意,startcmd.exe 的命令,而不是 Windows 的命令。
  • @Joey 但重定向不起作用这是什么意思?
  • @Vikash:javaw 是一个 GUI 程序,它不会自动连接控制台。因此,您不能重定向标准流,如 stdout。
【解决方案2】:

您可以使用 Windows start 命令:

start /min java -jar spider.jar

这个命令实际上和nohup不太一样;但如果您对在单独的最小化窗口中运行的 Java 进程感到满意,这可能是合适的。见http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/ntcmds.mspx

【讨论】:

  • 结合 javaw 和 start 我们也可以摆脱最小化窗口。启动 javaw -jar spider.jar
  • powershell 的类似物怎么样?
【解决方案3】:

获得 nohup 行为的唯一方法是运行带有 start javaw -jar ... 内容的 .bat 文件,即注销后进程仍在运行(如微服务、分析工具、服务器批处理作业等)作为服务或计划任务。

【讨论】:

    【解决方案4】:

    将以下代码保存到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"
    

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

    【讨论】:

    • 这个关键字是什么意思:'ture'?
    • @AlexanderStohr 抱歉,这是拼写错误。
    【解决方案5】:

    对于 windows,在命令提示符或终端中按照提到的命令运行

    nohup(需要运行的文件)>(需要保存日志的文件)2>&1

    例如: nohup ./bin/windows/kafka-server-start.bat config/server.properties > ./MyKafka.log 2>&1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-25
      • 2013-03-13
      • 2016-12-11
      • 1970-01-01
      • 2011-06-07
      • 1970-01-01
      相关资源
      最近更新 更多