10

まず、これをスーパーユーザーに移動する必要がある場合があります。どちらの会場が良いか判断できませんでした。

起動/再起動時に実行される 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

次に、「/etc/init.d/StartWorkers.sh」というタイトルの R スクリプトを実行するシェル スクリプトを作成しました。

#!/bin/sh
sudo echo "Starting R workers"
sudo R CMD BATCH ~/Rworker.R ~/RLog

を使用して、このシェルスクリプトを実行可能にしchmod +x StartWorkers.shました。実行./StartWorkers.shすると、すべてがうまく機能し、R セッションが開始され、ワー​​カーがプールに追加されます。

ここで、マシンを起動/再起動するときにこのシェル スクリプトを実行する必要があるため、 update-rc.d StartWorkers.sh defaults. このコマンドは機能しているように見えますが、「update-rc.d: warning: /etc/init.d/StartWorkers.sh missing LSB information」という警告が表示されます。

ただし、rcconf で確認すると、「StartWorkers.R」がスタートアップ リストにあることが確認されます。

ただし、マシンを再起動すると、スクリプトの実行に失敗します。私は何を間違っていますか?シェル スクリプトはコマンド ラインからは正常に実行されますが、起動時に実行しようとすると失敗します。

/EDIT:わかりました、Dirkの答えに従って、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ありましたが、小さなシェル スクリプトが機能するようになりました。にスクリプトを追加したところ、/etc/rc.local完全に起動しました!

4

1 に答える 1

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 に関するヒントの良い情報源でもあります。

于 2011-06-17T19:48:34.493 に答える