スクリプト内で呼び出すときにulimit -nが機能しないのはなぜですか?

スクリプト内で呼び出すときにulimit -nが機能しないのはなぜですか?

これはとても奇妙です。私の設定でこれを試していますulimit60000startup.sh

#!/bin/bash

ulimit -n 60000
echo "Hello! File Descriptor set"

(755ファイル権限)でこれを行うことができ、./startup.shエコーラインはエラーなく印刷されます。ただし、これを行ってもulimit -n表示されます1024。何が起こっているのでしょうか?

驚くべきことにulimit -n 60000、端末に入力して実行するとulimit -n完璧に動作します。スクリプトでファイル記述子の制限を設定できないのはなぜですか?

Debian 8、64ビット。 OpenVZコンテナ

ベストアンサー1

これは、制限がシェルスクリプト、つまりbashスクリプトを実行して生成されたシェル(この場合)内に設定されているためです(カーネルは実際にスクリプトをシェルに引数として渡します)。

したがって、スクリプトの実行が完了するとそれ殻も消えました(そして制限的です)。その後、元のシェルに戻ります。

テストするには、ulimit -n内部でスクリプトを実行してください。

おすすめ記事