メモリ使用量を制限するためにRスクリプトをラップしました/usr/lib/R/bin/exec/R
。名前を変更し/usr/lib/R/bin/exec/R_orig
、/usr/lib/R/bin/exec/R
コンテンツ名にちなんでbashスクリプトを作成しました。
#!/bin/bash
echo "Memory limited to 10G"
ulimit -Sv 10000000 #limit memory for 64-bit version
/usr/lib/R/bin/exec/R_orig "$@"
これはこの特定のプログラムの私の経験で大きな改善でしたが、そのいくつかは実際にパッケージのインストールパスを決定するために実行可能ファイル名を使用し、実行可能ファイル名が変更されたため失敗したことを発見しました。
/usr/lib/R/bin/exec/R
私のスクリプト自体を実行可能ファイルと見なすことはできますか?たとえば、top
個々の子プロセスを表示せずにR_orig
プロセスのみを表示しますかR
?
ベストアンサー1
しないでください。元のコンテンツを文字列を標準出力に出力するコンテンツに置き換えることで、出力を解析できるR
アプリケーションを混同する可能性があります。
代わりに、新しい名前でラッパースクリプトを作成し、元のR
実行可能ファイルを変更しないでください。このスクリプトを/usr/lib/R/bin/exec
同様の場所に置かないでください/usr/local/bin
(すべてのユーザーがアクセスする必要がある場合)。また、将来のパッケージのアップグレードや削除スクリプトを混同することはありません。
シェル起動ファイルでシェル関数を定義することもできます。
myR () (
echo "Memory limited to 10G"
ulimit -Sv 10000000 #limit memory for 64-bit version
exec /usr/lib/R/bin/exec/R "$@"
)
別の明確な選択は、シェル初期化スクリプトで制限(~/.bashrc
for)を設定することですbash
。この制限は、シェルで開始されたすべてのプロセスに適用されます。