Запустить сценарий R при загрузке

Прежде всего, это может потребоваться для перехода к суперпользователю. Я не мог решить, какое место лучше.

Я пытаюсь написать сценарий R, который будет запускаться при загрузке / перезагрузке, и добавить эту машину в пул из doRedis рабочих . (doRedis - это foreach backend).

Вот мой сценарий 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 .

Затем я написал сценарий оболочки для запуска сценария R под названием "/etc/init.d/StartWorkers.sh"

#!/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 по умолчанию . Эта команда работает, но я получаю следующее предупреждение: 'update-rc.d: warning: /etc/init.d/StartWorkers.sh отсутствует информация LSB'

Однако проверка с помощью rcconf подтверждает, что "StartWorkers.R" находится в стартовом списке.

Однако, когда Я перезагружаю машину, скрипт не запускается. Что я делаю не так? Сценарий оболочки отлично работает из командной строки, но терпит неудачу, когда я пытаюсь запустить его при запуске.

/ EDIT: хорошо, согласно ответу Дирка, я установил 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 -> 
Execution halted

Я знаю, что в моей системе установлена ​​многоядерная система!

/ EDIT2: Мне пришлось переместить все мои пакеты R в cd / usr / lib / R / site-library , и теперь работает небольшой сценарий оболочки. Я добавил скрипт в /etc/rc.local , и он отлично запускается!

9
задан Zach 17 June 2011 в 21:20
поделиться