[英]Is there a way of running a script *within Rstudio* via windows command line?
我想设置一个计划任务以在启动时运行一个脚本,该脚本通过 rstudio 的作业启动一组 API。 我尝试通过命令“R path/to/job_script.R”在powershell中运行它,但得到以下错误:
Error in check_available() :
You must run this from the RStudio main session.
所以看来这必须在 Rstudio 中运行。 我想知道有没有办法告诉 rstudio 打开并设置这个脚本运行? 尝试“rstudio path/to/script.R 只会在 rstudio 中打开脚本,但不会实际运行它。
我知道我可以将每个 api 设置为通过单独的 R 脚本启动,但这会使监控成为一场噩梦,因为我必须查看 10 个不同的 r 窗口而不是单个 rstudio 窗口。
编辑:评论似乎误解了我想要实现的目标。 我特别想通过Rstudio 的新工作功能的多个实例来启动一套工具。 从 cmd 运行 r 脚本不足以实现这一点,因为我希望一个地方能够查看我所有工具上的日志等。
我最终想通了。 诀窍是将您的作业脚本放在 .Rproj 的 .Rprofile 中。 然后使用 rstudioapi 包设置项目启动的钩子。 这是我的 .Rprofile 的粗略骨架:
setHook("rstudio.sessionInit", function(newSession) {
if (newSession) {
apis = list(
list(
name = "api1",
host = "<server_ip>",
port = "1111",
wd = "path/to/working_dir1"
),
list(
name = "api2",
host = "<server_ip>",
port = "1112",
wd = "path/to/working_dir2"
),
)
message("Launching All APIs")
for (api in apis) {
#all my projects have a run_api.R file at their root:
#might be cleaner to just plumb from here directly?
job::job({
source(file.path(root_dir, app[["dir"]], "run_api.R"))
},
opts = options(
host = api$host,
port = api$port,
wd = api$wd
)),
title = app[["name"]])
}
}, action = "append")
这结合了 rstudioapi 包和作业包功能,可用于启动闪亮的应用程序、管道工 api 等。
现在,我可以在 Windows 中设置计划任务,通过 cmd 行通过单个 rstudio 会话设置所有这些 api 在启动时运行:
"C:\Program Files\RStudio\bin\rstudio.exe" "path\to\project\runAPIs.Rproj"
最后,我通过 rstudio 作业选项卡对我的所有应用程序/api 进行了非常漂亮的高级显示:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.