Rscript запускает проблему с TMPDIR через plink -ssh в Windows
Я хочу создать свой собственный вариант makePSOCKcluster
а также newPSOCKnode
используя ssh соединение через plink. Итак, я переписываю код
if (machine != "localhost") {
rshcmd <- getClusterOption("rshcmd", options)
user <- getClusterOption("user", options)
cmd <- shQuote(cmd)
cmd <- paste(rshcmd, "-l", user, machine, cmd)
}
if (.Platform$OS.type == "windows") {
system(cmd, wait = FALSE, input = "")
}
else system(cmd, wait = FALSE)
по моему варианту, который дает мне cmd
как это:
plink -ssh Rebelion@ClusterNode1 -pw myPasswd123 "Rscript --default-packages=datasets,utils,grDevices,stats,graphics,methods -e parallel!:::.slaveRSOCK MASTER=CLUSTERNODE1 PORT=11038 TIMEOUT=2592000 XDR=TRUE".
ClusterNode1 - это текущая машина (я вошел как Rebelion, это логин администратора).
Но system(cmd, wait=FALSE, input="")
дает мне это:
Fatal error: creation of tmpfile failed -- set TMPDIR suitably?
Я не знаю, почему я получаю эту ошибку и что мне делать. Я поставил TMPDIR
, TMP
а также TEMP
переменные как %USERPROFILE%/AppData/Local/Temp
Я установил максимальные привилегии для всех пользователей, кроме гостей.
Может ли кто-нибудь помочь мне решить эту проблему? Thnxs.
4 ответа
TMPDIR
должен быть реальный путь, как C:\Users\martin\AppData\Local\Temp
,
Он не может содержать другие переменные среды.
Использование system2
вызовите и передайте переменную TMPDIR, используя env
аргумент.
Из документации:
system2(command, args = character(), stdout = "", stderr = "", stdin = "", input = NULL, env = character(), wait = TRUE, minimized = FALSE, invisible = TRUE)
env
: символьный вектор строки name=value для установки переменных окружения.
Также попробуйте указать путь TMPDIR как абсолютный путь, например C:\Windows\Temp, вместо использования переменных среды CMD.
Это похоже на проблему с настройками входа в систему на этом удаленном компьютере. Я бы попытался заставить следующее работать (из командной строки Windows):
plink -ssh Rebelion@ClusterNode1 -pw myPasswd123 "Rscript --version"
и если это работает, убедитесь, что:
plink -ssh Rebelion@ClusterNode1 -pw myPasswd123 "Rscript -e 1+2"
тоже работает. Только тогда начните беспокоиться об этом с помощью параллельного пакета в R.
Благодарю вас. Я не знаю, как дать очки всем вам, извините, но я действительно хочу дать награду всем вам. Основная проблема заключалась в OpenSSH и отдельном правиле привилегий, которое не позволяет создавать сеанс с правами администратора. Сегодня я могу запустить Rscript нормально, но есть проблемы с parallel!:::.slaveRSOCK()
часть (я полагаю, это связано с разделителями и путями, я тоже скоро решу эту проблему). Спасибо снова и снова. Если вы знаете, как дать щедрость всем вам - пожалуйста, скажите мне, я сделаю.