我正在开发需要在两台服务器上冗余运行的R代码。代码的某些方面(如文件路径或错误消息页脚)需要特定于每个服务器。我更喜欢根据当前运行代码的机器的主机名或ip来切换,而不是为每个文件提供特定于服务器的版本。我该怎么做
我在想像这样的东西
if(localIP == 123.45.678.9){
msg = "Sent by server A"
} else if (localIP == 123.55.555.5) {
msg = "Sent by server B"
} else {
msg = "Default message"
}那么,如何获得localIP值或类似的标识呢?
发布于 2012-01-28 01:07:50
主机名通常可以作为环境变量使用:
# Windows: COMPUTERNAME, Linux: HOST or HOSTNAME
host <- Sys.getenv(c("COMPUTERNAME", "HOST", "HOSTNAME"))
host <- unname(host[nchar(host)>0][1])...But也许在启动R时添加自定义环境变量会更干净:
R -f myscript.R myserver=A然后从脚本中获取环境变量:
server <- Sys.getenv("myserver")
msg <- switch (server, A="Sent by server A", B="Sent by server B", "Default message")发布于 2012-01-28 23:25:01
Tommy的回答得到了肯定,但我想记录它带给我的解决方案,只是略有不同。
Sys.info()返回许多关于平台的变量。nodename属性返回“在网络上识别机器的名称(如果有)”。
host <- Sys.info()["nodename"]应该注意的是,Sys.info()“并不是在所有平台上都实现的”,因此这并不是完全可移植的。
https://stackoverflow.com/questions/9037067
复制相似问题