我在 linux 集群中一次以批处理模式运行不同的 R 脚本,以估计不同数据集中的模型(当我在 Mac 中运行它时也会发生这种情况)。除了它们使用的数据集之外,这些脚本完全相同。当我这样做时,我收到以下消息。
Error in socketConnection("localhost", port = port, server = TRUE, blocking = TRUE, :
cannot open the connection
Calls: makePSOCKcluster -> newPSOCKnode -> socketConnection
In addition: Warning message:
In socketConnection("localhost", port = port, server = TRUE, blocking = TRUE, :
port 11426 cannot be opened
这是一个可重现的例子。创建两个文件,tmp1.R 和 tmp2.R,以及 tmp.sh,其内容为:
文件 tmp1.R 和 tmp2.R 的内容:
library(dclone)
l <- list(1:100,1:100,1:100,1:100)
cl <- makePSOCKcluster(4)
parLapply(cl, X=l, fun=function(x) {Sys.sleep(2); sum(x); })
stopCluster(cl)
tmp.sh 文件内容:
#!/bin/sh
R CMD BATCH tmp1.R &
R CMD BATCH tmp2.R &
列表中的第一个文件将被执行。第二个将显示上述错误。有谁知道如何解决它并且仍然在没有任何手动干预的情况下自动运行所有脚本?
PS:我已经阅读了所有其他类似的问题,没有一个可重复的例子或上述问题的答案。