私は 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