質問: mac os x10.6でのulimitの奇妙な動作 ulimitを使用すると、非常に奇妙な動作が発生します。新しいシェルを開くだけですhector:~ robertj$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d) unlimited file size (blocks, -f) unlimited max locked memory (kbytes, -l) unlimited max memory size (kbytes, -m) unlimited open files (-n) 256 pipe size (512 bytes, -p) 1 stack size (kbytes, -s) 8192 cpu time (seconds, -t) unlimited max user processes (-u) 532 virtual memory (kbytes, -v) unlimited /etc/launchd.conf内のファイルの制限を無制限に設定したとしても、これがデフォルトのようです。しかし、それは別の日の別の質問です。ここで、ファイルの数を1024に増やして、新しい設定をもう一度見てみましょう。 hector:~ robertj$ ulimit -n 1024 hector:~ robertj$ ulimit -a | grep open open files (-n) 1024 さて、それはうまくいきます。涼しい!もう一度設定を変更しましょうhector:~ robertj$ ulimit -n 512 hector:~ robertj$ ulimit -a | grep open open files (-n) 512 繰り返しますが、それはうまく機能します。もう一度高い値に変更しましょうhector:~ robertj$ ulimit -n 1024 -bash: ulimit: open files: cannot modify limit: operation not permitted hector:~ robertj$ これは今何ですか?これをsudoしようとしてもエラーは発生しませんが、値も変更されません。hector:~ robertj$ sudo ulimit -n 1024 password: hector:~ robertj$ ulimit -a | grep open open files (-n) 512 hector:~ robertj$ ここで何が起こっているのですか?私は完全に困惑しています!どんな助けでも大歓迎です...robertj
回答: あなたを混乱させる2つのことがあります。 1つ目は、各リソースにハード制限とソフト制限の両方があることです。 ulimit -n 512セット両方それらの、しかしulimit -aはソフト制限のみを表示します。ハード制限を設定すると、それを減らすことしかできません。$ ulimit -n 256 $ ulimit -hn # there's no initial hard limit unlimited $ ulimit -n 512 # this sets both the hard and soft limits $ ulimit -n 512 $ ulimit -hn 512 $ ulimit -n 1024 # once set, the hard limit cannot be increased -bash: ulimit: open files: cannot modify limit: operation not permitted あなたを混乱させる2番目のことはsudo ulimitあなたが思っていることをしません。 (ルート)サブプロセスを生成し、開いているファイルの制限を設定しますそのサブプロセスに対して、そしてサブプロセスを終了します。制限はプロセスごとの設定であるため、制限をsudoで変更しても、何の役にも立ちません。