gpt4 book ai didi

在启动时运行 R 脚本

转载 作者:IT王子 更新时间:2023-10-29 05:55:48 25 4
gpt4 key购买 nike

首先,这可能需要移动到 super 用户。我无法决定哪个 field 更好。

我正在尝试编写一个将在启动/重新启动时运行的 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)

我可以从命令行运行这个脚本,使用命令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

我使用 chmod +x StartWorkers.sh 使这个 shell 脚本可执行。当我运行 ./StartWorkers.sh 时,一切正常,R session 启动,工作人员被添加到池中。

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

但是,使用 rcconf 进行检查确认“StartWorkers.R”在启动列表中。

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

/编辑:好的,根据德克的回答,我安装了 littler,并将“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)

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

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 并完美启动!

最佳答案

这是一个有点像 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 提示的良好来源。

关于在启动时运行 R 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6390913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com