在启动时运行R脚本

Zac*_*ach 9 ubuntu multicore r autostart redis

首先,可能需要将其移至超级用户.我无法确定哪个场地更好.

我正在尝试编写一个将在启动/重新启动时运行的R脚本,并将该计算机添加到doRedis工作池中.(doRedis是一个foreach后端).

这是我的R脚本,"〜/ Rworker.R"

#Define Parameters
require(multicore)
Host <- 'ip_of_doRedis_Server'
cores <- multicore:::detectCores()
TO <- 24*3600

#Start Workers
require('doRedis')
startLocalWorkers(cores,'jobs',host=Host,port=6379, timeout = TO)
Run Code Online (Sandbox Code Playgroud)

我可以使用命令从命令行运行此脚本 sudo R CMD BATCH ~/Rworker.R ~/RLog.

接下来,我编写了一个shell脚本来运行R脚本,标题为"/etc/init.d/StartWorkers.sh"

#!/bin/sh
sudo echo "Starting R workers"
sudo R CMD BATCH ~/Rworker.R ~/RLog
Run Code Online (Sandbox Code Playgroud)

我使用了这个shell脚本可执行文件chmod +x StartWorkers.sh.当我运行时,./StartWorkers.sh一切运行良好,R会话启动,工作人员被添加到池中.

现在,我需要在启动/重启机器时运行这个shell脚本,所以我输入 update-rc.d StartWorkers.sh defaults.此命令似乎有效,但我收到以下警告:'update-rc.d:warning:/etc/init.d/StartWorkers.sh缺少LSB信息'

但是,使用rcconf检查确认"StartWorkers.R"在启动列表中.

但是,当我重新启动计算机时,脚本无法运行.我究竟做错了什么?shell脚本从命令行运行良好,但在我尝试在启动时运行它时失败.

/编辑:好的,根据Dirk的回答,我安装了更小的,并将'StartWorkers.sh'更改为以下内容:

#! /usr/bin/r

#Define Parameters
require(multicore)
Host <- 'zachec2.dyndns.org'
cores <- multicore:::detectCores()
TO <- 24*3600

#Start Workers
require('doRedis')
startLocalWorkers(cores,'jobs',host=Host,port=6379, timeout = TO)
Run Code Online (Sandbox Code Playgroud)

但是当我运行它时,我得到以下输出:

Loading required package: utils
Loading required package: multicore
Warning message:
In library(package, lib.loc = lib.loc, character.only = TRUE, logical.return = TRUE,  :
  there is no package called 'multicore'
Error in loadNamespace(name) : there is no package called 'multicore'
Calls: ::: ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
Execution halted
Run Code Online (Sandbox Code Playgroud)

我知道我的系统上安装了多核!

/ EDIT2:我必须将所有的R包移动到cd /usr/lib/R/site-library现在,而且更小的shell脚本可以工作.我添加了脚本/etc/rc.local,它启动完美!

Dir*_*tel 8

这是一个R问题,有点在Ubuntu系统管理问题上.这里有几点:

  1. 对于简单的启动任务,我建议只使用/etc/rc.local可以附加工作的地方.

  2. 我只是不喜欢R CMD BATCH这就是为什么Jeff Horner和我写了littler,它给你提供/usr/bin/r了更简单的R脚本.R本身也给你Rscript; 任何一个都优于R CMD BATCH.

  3. 要测试脚本,只需以root身份运行它们.一旦他们将它们添加到/etc/rc.local.

希望这可以帮助.该r-sig-debian列表也是Ubuntu/Debian技巧的一个很好的来源.