32

EC2 スポット インスタンスで R を実行していますが、R でインスタンスを終了し、スクリプトの実行後にスポット リクエストをキャンセルする必要があります。

そのために、「リクエストID」を環境変数に設定しました。/.bashrc私の計画は、スクリプトの準備ができたら、次のコードをRに呼び出すだけでした。

system("ec2-cancel-spot-instance-requests $SIR")

env私が抱えている問題は、Rの外部から入力したときに見たのと同じ環境変数をRが「認識」していないため、コマンドが機能しないことです。

環境変数を/etc/environmentRに設定すると、それらの変数を確認できますが、ここに別の問題があります。これらの変数は動的であるため (インスタンス ID とリクエスト ID はスポット インスタンスが作成されるたびに異なります)、次の形式で作成するスクリプトを実行しています。

export SIR=`cat /etc/ec2_instance_spot_id.txt`

そのファイルに動的 ID が含まれている場所

では、「動的」環境変数を に挿入するにはどうすればよい/etc/environmentですか? または、Rに環境変数を読み取らせるにはどうすればよい/.bashrcですか?

正しい方向へのヒントは大歓迎です!

4

3 に答える 3

34

あなたは、言うSys.getenv()ようにしたいです。Sys.getenv("PATH")

またはあなたの例のために、試してみてください

SIR <- Sys.getenv("SIR")   
system(paste("ec2-cancel-spot-instance-requests",  SIR))

起動時の変数の設定については、を参照help(Startup)して~/.Renvironmentください。

于 2012-09-06T00:27:31.197 に答える