当社の開発ボックスをセットアップするためのさまざまなインストール手順を実行する Perl スクリプトがあります。ulimit
さまざまなシェルスクリプトを実行しますが、必要なs (具体的には、私の場合はスタックサイズ)よりも小さいためにクラッシュするものもあります-s
。
したがって、メインの Perl スクリプト内から開始ulimit
されたすべてのスクリプト ( children
) に適用される a を設定したいのですが、それを達成する方法がわかりません。スクリプト内から ulimit を呼び出そうとすると、その特定のスクリプトにのみ設定されます。すぐに終了する子シェル。
ulimit
Perl スクリプトを実行または使用する前に呼び出すことができることは承知しています/etc/security/limits.conf
が、ユーザーにこのことを知られたくありません。ユーザーはスクリプトの実行方法のみを知っている必要があり、そのすべてを処理する必要があります。
ulimit
このように、コマンドを実行するたびに実行することもできますが、毎回ulimit -s BLA; ./cmd
これを複製したくはありません。より良い、よりクリーンなソリューションがあるように感じます。
別のクレイジーな「回避策」は、ulimit を設定して BLA.pl を呼び出す BLA.sh というラッパー スクリプトを作成することです。 "ulimit -s BLA; ./BLA.pl --foo" で自分自身を呼び出し、 --foo を見るかどうかに基づいて異なる動作をしますが、これは以前よりもさらにハックです)。
最後に、どうやら BSD::Resource をインストールできたようですが、外部依存関係の使用は避けたいと思います。
では、Perl スクリプト内から ulimit を設定し、それをすべての子に適用する方法は何ですか?
ありがとうございました。