在Shiny-Server内部使用system()运行系统命令

时间:2018-10-25 00:49:32

标签: r shiny shiny-server

我有一个闪亮的应用程序,该应用程序需要运行系统命令以通过对system()的调用来触发数据集成作业,如果我运行独立的闪亮(与runApp一起运行),则可以正常工作,但是如果我部署代码到没有更改的闪亮服务器,system()命令不起作用。 system()是闪亮服务器内部的有效调用吗?如果没有,执行系统命令还有哪些选择?

2 个答案:

答案 0 :(得分:0)

在闪亮的(&闪亮的服务器)中运行system()效果很好:

library(shiny)

ui <- fluidPage(
textOutput("dirOut")
)

server <- function(input, output) {

  SysName <- Sys.info()['sysname']

  if(SysName=="Linux"){
    dir <- system("pwd", intern = TRUE)
  } else if(SysName=="Windows"){
    dir <- system("cmd cd", intern = TRUE)
  } else {
    dir <- paste("Error: No cmd given for", SysName)
  }

   output$dirOut <- renderText({
     dir
   })
}

shinyApp(ui = ui, server = server)

答案 1 :(得分:0)

万一有人遇到这种情况,我发现我的问题是因为Shiny-server在“光泽”用户下运行,该用户没有特权来运行我需要的系统命令(运行一些脚本),并且也没有特权(读取或执行)脚本,并通过向“闪亮”用户授予必要的权限来解决该问题。