为什么在 Windows 上从命令行启动闪亮时会启动两个 Rscript 进程?

5
当我从cmd命令行启动运行shiny应用的R脚本时,似乎会启动两个Rscript.exe实例?我总是可以关闭其中较小的一个而应用程序仍然可以继续运行。有人能详细说明一下幕后发生了什么,或者告诉我我做错了什么导致出现双重进程吗?

super_simple.R

require(shiny)

app <- shinyApp(
  ui = bootstrapPage(
    numericInput('n', 'Number of obs', 100),
    plotOutput('plot')
  ),
  server = function(input, output) {
    output$plot <- renderPlot({ hist(runif(input$n)) })
  }
)

runApp(app, launch.browser = FALSE, port = 1234, host = "10.123.4.56")

现在,如果我通过cmd命令行启动它:
START Rscript --vanilla C:\Users\Jason\Projects\super_simple.R

此时,我可以将浏览器指向 http://10.123.4.56:1234 并查看该应用。但是,如果我通过以下方式查看正在运行的进程:tasklist /FI "imagename eq rscript*",我会看到两个 Rscript.exe 进程:

Processes

我已经确定的是,我总是可以杀掉其中较小的一个(例如,taskkill /pid 9360 /f),但应用程序仍然完整地运行?注意:我尝试通过 START \b ... 在后台启动命令,但结果相同。

1
我猜测一个实例运行你的脚本,而runApp则为应用程序本身创建第二个实例。 - Martin Schmelzer
1个回答

4
这是与 R 脚本命令行实用程序(Rscript.exeR.exeRcmd.exe)相关的一般事情,而不是特定于 Shiny。实际上,所有这些实用程序都在底层调用 Rterm.exe 以在单独的进程中运行实际程序。
尝试使用 --verboseRscript.exe,您就会明白我的意思:
> Rscript --verbose script.R
running
  'C:\PROGRA~1\R\R-34~1.0\bin\x64\Rterm.exe --slave --no-restore --file=script.R'

您可以尝试其他工具并查看它们的表现。

更多信息,请查看源代码

这个问题也有一些很好的信息


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