Rscript在Windows上通过plink -ssh与TMPDIR运行时出现问题

Dmi*_*riy 6 ssh plink r tempdir

我想通过plink 创建自己的变体makePSOCKclusternewPSOCKnode使用ssh连接.所以,我重写了代码

    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)
Run Code Online (Sandbox Code Playgroud)

通过我的变体,这给了我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". 
Run Code Online (Sandbox Code Playgroud)

这里的ClusterNode1是一台当前的机器(我记录为Rebelion,它是管理员登录).

但是system(cmd, wait=FALSE, input="")给我这个:

Fatal error: creation of tmpfile failed -- set TMPDIR suitably?
Run Code Online (Sandbox Code Playgroud)

我不知道为什么我会收到这个错误,我该怎么办.我设置TMPDIR,TMP以及TEMP变量%USERPROFILE%/AppData/Local/Temp,我设置最大privilegies为所有类型的用户,除了客人.

谁能帮助我解决这个问题?Thnxs.

小智 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 环境变量。