我在一个相当慢的桌面上使用Windows +上的Excel + R.我有一个完全的管理员访问非常快速的基于Ubuntu的服务器。我想知道:如何在服务器上远程执行命令?
我能做的是保存所需的变量 saveRDS
,并将它们加载到服务器上 loadRDS
,在服务器上执行命令,然后保存结果并在Windows上加载它们。
但这一切都非常具有互动性和手动性,很难定期完成。
有没有办法直接从R做这些东西,比如
- 通过例如与服务器连接SSH,
- 传输所需的对象(可以手动指定)
- 在服务器上执行给定代码并等待结果
- 得到结果。
我可以远程运行整个R,但随后它会产生与网络相关的问题。我在Excel中执行的大多数R命令都非常快且数据量很大。我只需要远程执行一些特定的命令,而不是所有命令。
还有一些选择:
1)您可以使用Rserve直接从R完成这些操作。看到: https://rforge.net/
请记住,Rserve可以接受来自R客户端的连接,例如,请参阅 如何使用R客户端连接到Rserve。
2)您可以在Linux机器上设置群集,然后从Windows客户端使用这些群集功能。最简单的是使用Snow, https://cran.r-project.org/package=snow,还可以看到foreach和许多其他集群库。
有几个选择, 最简单的 是交换安全密钥以避免一直手动输入SSH / SCP密码。在此之后,您可以编写一个简单的R脚本,该脚本将:
- 将必要的变量保存到数据文件中,
- 使用scp将数据文件上传到ubuntu服务器
- 使用ssh运行将处理数据(您刚刚上传的数据)的远程脚本,并将结果存储在另一个数据文件中
- 再次,使用scp命令将结果传回工作站。
你可以用R's system
用必要的选项运行scp和ssh的命令。
另外一个选择 是在远程计算机上设置集群工作程序,然后可以使用clusterExport导出数据并使用clusterEvalQ和clusterApply计算表达式。