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

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

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

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

#! /bin/bash

ulimit -m 1024

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

これはサイズを大きくするはずです$Xが、この例はまさに制限したい種類のものです。しかし、ulimit 呼び出しは機能していないようです。スクリプトは正常に実行でき、終了せず、topスクリプトが大量のメモリを取得することがわかります。何が間違っているのでしょうか? このスクリプトが一定量以上のメモリを使用しないようにするにはどうすればよいでしょうか?

答え1

このオプションを使用すると、スクリプトをエラーにできました-v:

#!/bin/bash

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

Bash のマニュアルページには次のように書かれています:

-m 最大常駐セットサイズ(多くのシステムでは無視されます)
              この制限)

答え2

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

ulimit -v 1024 

関連情報