Прежде всего, это может потребоваться перенести в суперпользователя.Я не мог решить, какое место было лучше.
Я пытаюсь написать сценарий 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
.
Далее я написал сценарий оболочки для запуска сценария 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 defaults
.Эта команда работает, но я получаю следующее предупреждение: «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 -> <Anonymous>
Execution halted
Я знаю, что в моей системе установлена многоядерная система!
/ EDIT2:Мне пришлось переместить все мои R-пакеты в cd /usr/lib/R/site-library
, и теперь скрипт оболочки littler работает.Я добавил скрипт к /etc/rc.local
, и он отлично запускается!