R beakr 脚本作为 Rscript Windows 10 服务

标签 r windows service rscript

我正在尝试在 Windows 中设置一个简单的 beakr 服务,以实现 https://github.com/MazamaScience/beakr 中的示例.我能够从命令行成功运行脚本,并且能够使用 NSSM 在 Windows 中添加服务,但我无法启动该服务。
当我深入研究服务错误日志时,我发现 Rscript.exe 由于非特定权限问题而无法执行。
我的 Rscript.exe 用完了 C:\Program Files\R\bin 并且我的 beakr.R 脚本用完了我的用户主目录。
如果有人在 Windows 中使用 R 成功实现了类似的服务(基于网页的 REST 端点),我很想知道您是如何做到的。

最佳答案

这就是我使用 latest pre-release version of NSSM 将 R 脚本作为服务运行时所做的。在 Windows 10 上:

  • 创建一个目录来存储文件
    在这个例子中:C:\R\ServiceTest
  • 在此目录中创建一个永无止境的脚本:ServiceTest.R
  • library(beepr)
    
    # Test script : beeps every 10 seconds
    while (T) {
      beepr::beep(1)
      if (interactive()) {
        # Shows spin cursor to facilitate test in interactive mode
        for (i in 1:10) {
          if (i%%4==0) {cursor <- '/'}
          if (i%%4==1) {cursor <- '-'}
          if (i%%4==2) {cursor <- '\\'}
          if (i%%4==3) {cursor <- '|'}
          cat('\r',cursor)
          flush.console() 
          Sys.sleep(1)
        } 
      } else {
        Sys.sleep(10)
      }
    }
    
    我曾经让这种脚本在我桌面上打开的控制台中运行,以定期检查各种警报。
  • 创建一个批处理文件来运行脚本:ServiceTest.bat
  • Rscript ServiceTest.R
    
  • 打开管理员 控制台并确保批处理文件正确运行:
  • C:\R\ServiceTest>ServiceTest.bat
    
    C:\R\ServiceTest>Rscript ServiceTest.R
     |
    
    取消批处理 (Ctrl+C)
  • 使用 管理员 控制台,使用 NSSM 将批处理文件安装为服务:
  • nssm install
    
    enter image description here
  • 设置服务名称:ServiceTest
  • 设置应用程序路径:C:\R\ServiceTest\ServiceTest.bat
  • 设置工作目录:C:\R\ServiceTest\
  • 设置登录:Windows用户+密码
  • 安装服务
  • 打开Windows服务管理器,找到ServiceTest并启动它:如果一切顺利,就是这样!
  • 如果您收到错误消息,请检查 Windows 事件日志/服务:您可以找到有关问题原因的提示。我遇到的最常见的问题:
  • 路径错误
  • 使用本地用户而不是自己的用户帐户/密码来运行服务
  • 如果要删除服务:
  • nssm remove ServiceTest
    
    这很好地取代了我在桌面后台运行的许多 R 控制台。
    我看不出它不能与 REST 端点一起使用的原因。

    关于R beakr 脚本作为 Rscript Windows 10 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63405874/

    相关文章:

    r - 基于 y 值的散点图颜色

    windows - 将 Systems Internals 列为制造商的 Windows 服务的名称是什么?

    r - 如何安装 GDAL 以在 R 中使用 rgdal?

    r - 我可以放大一个图并让其他图也以同样的方式缩放吗? (ggplot 和plotly)

    c++ - 如何从另一个打开的表单读取和更改主表单内的变量?

    c# - 覆盖静态字段

    windows - Windows 8 beta 中的交互式检测服务

    windows-services - 编写自更新 Windows 服务的最佳实践

    javascript - 如果它为空,如何编写条件http.get来创建记录

    r - 为什么同样的 ggplot 可以直接运行,但在 Shiny 中却失败?