2017-02-21 71 views
6

我想通過plink使用ssh連接創建自己的makePSOCKclusternewPSOCKnode變體。所以,我用我的變種,這給了我cmd這樣重寫代碼Rscript在Windows上通過plink -ssh運行TMPDIR問題

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) 

這裏
plink -ssh [email protected] -pw myPasswd123 "Rscript --default-packages=datasets,utils,grDevices,stats,graphics,methods -e parallel!:::.slaveRSOCK MASTER=CLUSTERNODE1 PORT=11038 TIMEOUT=2592000 XDR=TRUE". 

ClusterNode1是目前該機(我記錄爲叛逆性,這是一個管理員登錄)。

system(cmd, wait=FALSE, input="")給了我這樣的:

Fatal error: creation of tmpfile failed -- set TMPDIR suitably? 

我不知道爲什麼我得到這個錯誤,我該怎麼辦。我將TMPDIRTMPTEMP變量設置爲%USERPROFILE%/AppData/Local/Temp,我爲所有類型的用戶設置了最大權限,但客人除外。

任何人都可以幫助我解決這個問題嗎? Thnxs。

+0

不知何故系統或plink命令沒有以管理權限運行。嘗試給予每個人在配置的臨時目錄中的完全權限,並給它一個鏡頭 – SACn

回答

1

使用system2調用並使用env參數傳遞TMPDIR變量。

從文檔:

system2(command, args = character(), stdout = "", stderr = "", stdin = "", input = NULL, env = character(), wait = TRUE, minimized = FALSE, invisible = TRUE)

env:名稱=值串的字符向量來設置環境變量。

此外,嘗試給TMPDIR路徑作爲絕對路徑,如C:\ Windows \ Temp,而不是使用CMD環境變量。

+0

'env'設置執行的子進程的環境變量。而對於OP來說,當前Rscript進程缺少變量。 –

2

TMPDIR必須是實際路徑,如C:\Users\martin\AppData\Local\Temp

它不能包含其他環境變量。

1

這看起來像是您的登錄啓動設置在該遠程計算機上的問題。我會試圖讓下面的工作(從Windows命令提示符):

plink -ssh [email protected] -pw myPasswd123 "Rscript --version" 

和是否工作,確保:

plink -ssh [email protected] -pw myPasswd123 "Rscript -e 1+2" 

也適用。只有這樣,纔開始擔心用R中的並行程序包來做這件事。

0

謝謝。我不知道,怎麼給大家點意見,對不起,但我真的想給大家一個賞賜。 主要問題在於OpenSSH和單獨的特權規則,它不允許創建具有管理員權限的會話。 Novaday我可以正常運行Rscript,但有parallel!:::.slaveRSOCK()部分的問題(我想,這是連接分隔符和路徑,我會很快解決這個問題)。 謝謝你一遍又一遍。如果你知道如何給予你所有的獎勵 - 請說,我會的。

+0

很高興聽到你明白!在多個答案之間分享賞金是不可能的,但可以授予另一獎賞的另一個賞金,請參閱https://meta.stackoverflow.com/a/261423/119918。 – Olli

+0

您能澄清一下您的意思:「我可以正常運行Rscript」,例如顯示您從命令行執行的完整調用以及輸出結果。這有助於我們瞭解您的位置以及缺少的內容。 – HenrikB

相關問題