4

プロセッサに対する要求が非常に高いため、Linux クラスターで R プログラムを実行しています。私のプログラムは、複数 (約 15) のプロットを PDF として、プログラムが入力を収集するフォルダーに出力するように設計されています。

プログラムをバックグラウンドで実行し、クラスターからログアウトしても実行を継続したい。

まず、私はこれを試しました:

cd /Users/The/Folder/With/My/RScript #changed working directory
nohup ./BatchProgram.R &

ただし、出力が というファイルに追加され、nohup.out必要な PDF が出力されなかったため、これは機能しませんでした。

次に私はこれを試しました:

cd /Users/The/Folder/With/My/RScript #changed working directory
R #to run R
source(‘BatchProgram.R’) #to run my program

これにより、目的の出力が得られましたが、バックグラウンドでプログラムを実行しませんでした (クラスターからログアウトすると停止します)。

バックグラウンドでプログラムを実行しているときに、2番目のコードブロックの出力を取得する方法について誰かが教えてくれますか?

どうもありがとう!

4

2 に答える 2

9

nohupバックグラウンドでコマンドを実行し、停止を指示するシグナルを無視し (ログオフ時など)、出力をファイルにリダイレクトします。しかし、それは実行可能なコマンドである必要があります。おそらく、実行できないnohup.outというエラー メッセージが表示されるでしょう。BatchProgram.R

以下が機能するはずです。

nohup Rscript ./BatchProgram.R &
于 2012-07-24T00:21:45.863 に答える
4

ソリューションはテスト済みです。「nohup」バージョンを作成することもできますが、提示される内容は私によく合います。次のように bash スクリプトを作成します (たとえば、run_R.sh)。

#!/bin/sh
R CMD BATCH --slave ./_your_R_script_name.R &
exit 0

次に、実行可能にします

chmod +x run_R.sh

次のようにファイルを実行します。

./run_R.sh

場合によっては、点滅するカーソルしか表示されないことがありますが (使用している Linux ディストリビューションによって異なります)、単純に「Enter」を押して続行します。

于 2012-07-23T20:29:52.483 に答える