まず、これをスーパーユーザーに移動する必要がある場合があります。どちらの会場が良いか判断できませんでした。
起動/再起動時に実行される 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
完全に起動しました!