首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在引导时运行R脚本

在引导时运行R脚本
EN

Stack Overflow用户
提问于 2011-06-18 03:38:08
回答 1查看 3.9K关注 0票数 9

首先,这可能需要移动到超级用户。我无法决定哪一个场地更好。

我正在尝试编写一个R脚本,该脚本将在引导/重新引导时运行,并将该机器添加到doRedis工作线程池中。(doRedis是一个foreach后端)。

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

代码语言:javascript
复制
#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)

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

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

代码语言:javascript
复制
#!/bin/sh
sudo echo "Starting R workers"
sudo R CMD BATCH ~/Rworker.R ~/RLog

我使用chmod +x StartWorkers.sh使这个shell脚本成为可执行文件。当我运行./StartWorkers.sh时,一切工作正常,R会话启动,工作进程被添加到池中。

现在,我需要在引导/重新引导机器时运行这个shell脚本,所以我输入update-rc.d StartWorkers.sh defaults。此命令似乎可以工作,但我收到以下警告:'update-rc.d: warning: /etc/init.d/StartWorkers.sh missing LSB information‘

然而,与rcconf的检查确认"StartWorkers.R“在启动列表中。

但是,当我重新启动机器时,该脚本无法运行。我做错了什么?shell脚本从命令行运行得很好,但是当我尝试在启动时运行它时会失败。

/EDIT:好的,根据Dirk的回答,我安装了littler,并将'StartWorkers.sh‘更改为:

代码语言:javascript
复制
#! /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)

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

代码语言:javascript
复制
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

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

/EDIT2:我不得不将我所有的R包迁移到cd /usr/lib/R/site-library,现在可以使用更小的shell脚本了。我将脚本添加到/etc/rc.local中,它可以完美地启动!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-06-18 03:48:34

这是一个有点R的问题,也是一个Ubuntu系统挖掘的问题。以下是几点:

  1. 对于简单的启动任务,我推荐使用/etc/rc.local,在那里你可以添加你的工作。
  2. 我就是不喜欢R CMD BATCH,这就是为什么Jeff Horner和我写了littler,它为你提供了/usr/bin/r和更容易的R脚本。R本身也为您提供根;与R CMD BATCH.
  3. To测试脚本相比,这两种方法都更可取,只需以Rscript身份运行它们即可。创建完成后,将它们添加到/etc/rc.local.

希望这能有所帮助。r-sig-debian列表也是一个很好的Ubuntu / Debian技巧来源。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6390913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档