web-dev-qa-db-ja.com

ulimitを使用して、スクリプトが使用できるメモリの量を制限する

私はubuntuシステムを持っていて、定期的に実行されるスクリプトを持っています。このスクリプトが使用できるメモリの最大量を制限する必要があります。 AFAIK ulimitはこれを行うためのコマンドですが、動作させることができません。

たとえば、次のスクリプトがあります。

#! /bin/bash

ulimit -m 1024

X="x"
seq 100 | while read LINE ; do
    X="$X$X"
done

これにより、$Xサイズが大きくなります。この例は、私が制限したい種類のものです。ただし、ulimit呼び出しは機能していないようです。スクリプトを正常に実行できますが、スクリプトは停止しません。topは、スクリプトが大量のメモリを取得していることを示しています。私は何が間違っているのですか?このスクリプトで特定の量を超えるメモリを使用しないようにするにはどうすればよいですか?

5
Rory

-vオプションを使用して、スクリプトでエラーを発生させることができました。

#!/bin/bash

ulimit -v 100000
for i in {1..10000000}
do
    x="x"$x
done

Bashのmanページには次のように書かれています。

-m常駐セットの最大サイズ(多くのシステムは
この制限を尊重しません)

仮想メモリを制限してみてください。

ulimit -v 1024 
1
vitalie