我有一个无头的R服务器,服务于最近的rstudio-server
。
我需要通过svSocket
传递一些对象。
因为svSocket
使用TCL / TK消息队列,这需要一个有效的X11会话,我知道我需要在虚拟X11环境中嵌入东西。
我通过ssh登录服务器,在命令行中输入以下命令:
sudo Xvfb :0 &
export DISPLAY=":0"
/usr/lib/rstudio-server/bin/rserver &
R
然后我通过其Web界面登录rstudio-server并输入以下命令:
> library(svSocket)
> startSocketServer()
[1] TRUE
然后,在这个R会话中,我提出以下
> library(svSocket)
> con<-socketConnection(host='localhost', port=8888)
> evalServer(con,'2+2')
我希望获得“4
”结果,但R挂起,永远不会返回任何提示。
如果我用常规R替换rstudio-server,一切正常。
这个例子打破rsession
的方式有什么特别之处?如何解决?
SessionInfo()
:
R version 3.2.3 (2015-12-10) Platform: x86_64-pc-linux-gnu (64-bit) Running under: Ubuntu 16.04 LTS locale: [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C [3] LC_TIME=pl_PL.UTF-8 LC_COLLATE=en_US.UTF-8 [5] LC_MONETARY=pl_PL.UTF-8 LC_MESSAGES=en_US.UTF-8 [7] LC_PAPER=pl_PL.UTF-8 LC_NAME=C [9] LC_ADDRESS=C LC_TELEPHONE=C [11] LC_MEASUREMENT=pl_PL.UTF-8 LC_IDENTIFICATION=C attached base packages: [1] stats graphics grDevices utils datasets methods base
答案 0 :(得分:0)
启动套接字连接时,您需要提及端口号
> library(svSocket)
> startSocketServer(port=8888)
它应该在此之后工作。