我在EC2竞价型实例上运行R,并且需要R终止实例并在脚本运行后取消竞价请求。
为此,我在环境变量中设置了“请求ID” /.bashrc,我的计划是在脚本准备好后将以下代码简单地调用到R中
/.bashrc
system("ec2-cancel-spot-instance-requests $SIR")
我遇到的问题是R无法“看到”我env从外部R 键入时看到的相同环境变量,因此该命令无法正常工作。
env
我已经检查了一下,如果我将环境变量设置为/etc/environmentR,就可以看到这些变量,但这是另一个问题。由于这些变量是动态的(每次创建竞价型实例时,实例ID和请求ID都是不同的),因此我正在运行脚本以以下形式创建它们:
/etc/environment
export SIR=`cat /etc/ec2_instance_spot_id.txt`
该文件包含动态ID的位置
那么,如何将“动态”环境变量插入/etc/environment?或者,如何使R读取位于的环境变量/.bashrc?
朝正确方向的任何提示将不胜感激!
你想Sys.getenv()在Sys.getenv("PATH"),说。
Sys.getenv()
Sys.getenv("PATH")
或者以您的示例为例
SIR <- Sys.getenv("SIR") system(paste("ec2-cancel-spot-instance-requests", SIR))
至于在启动时设置变量,请参阅help(Startup)了解~/.Renvironment等
help(Startup)
~/.Renvironment