r - R beakr 脚本作为 Rscript Windows 10 服务
问题描述
我正在尝试在 Windows 中设置一个简单的beakr服务,以实现https://github.com/MazamaScience/beakr上的示例。我能够从命令行成功运行脚本,并且能够使用 NSSM 在 Windows 中添加服务,但我无法启动该服务。
当我深入研究服务错误日志时,我发现Rscript.exe由于非特定权限问题而无法执行。
我的Rscript.exe用完了C:\Program Files\R<Version>\bin并且我的beakr.R脚本用完了我的用户主目录。
如果有人在 Windows 中使用 R 成功实现了类似的服务(基于网页的 REST 端点),我很想知道您是如何做到的。
解决方案
这是我在 Windows 10 上使用NSSM 的最新预发布版本运行 R 脚本作为服务所做的:
创建一个目录来存储文件
在这个例子中: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
- 设置服务名称:ServiceTest
- 设置应用程序路径:
C:\R\ServiceTest\ServiceTest.bat
- 设置工作目录:
C:\R\ServiceTest\
- 设置登录:Windows用户+密码
- 安装服务
打开 Windows 服务管理器,找到
ServiceTest
并启动它:如果一切顺利,就是这样!如果您收到错误消息,请检查 Windows 事件日志/服务:您可以找到有关问题原因的提示。我遇到的最常见的问题:
- 路径错误
- 使用本地用户而不是自己的用户帐户/密码来运行服务
- 如果要删除服务:
nssm remove ServiceTest
这很好地取代了我在桌面后台运行的许多 R 控制台。
我看不出它不能与 REST 端点一起使用的原因。
推荐阅读
- apache-spark - 将数据帧从 Spark 写入 Kafka 时出错 (org.apache.kafka.common.errors.RecordTooLargeException)
- python - 在pygame中拖动视图
- javascript - 使用简单的 peasy 反应商店问题,意外的渲染会弄乱商店中的模型
- pine-script - Pinescript 进入和关闭执行,延迟 1 bar
- r - 用另一个表中的“翻译”替换值
- python - 为什么这个变量超出范围?
- javascript - 如何将值从 div 提取到变量?
- swift - SwiftUI:检查窗口(不是应用程序)是否已激活(成为前台)的方法
- javascript - 按匹配数据 id 分组并按另一个数据属性排序
- html - CSS 自动填充内联网格中尽可能多的列