4

Puppets exec タイプを使用して ulimit コマンドを実行する方法を知りたいです。ulimit の問題は、バイナリではないため、前に /bin/bash を使用して呼び出す必要があるようです。コア ファイル サイズを無制限に変更しようとしています。私はこれを持っていますが、ulimit を認識しません。

exec {"ulimit":
        command => "/bin/bash ulimit -c unlimited",
}

コマンドラインで「ulimit -c unlimited」を実行すると、値が問題なく変更されます。問題は、Puppet を介してこれを行うことです。どんな助けでも素晴らしいでしょう。

4

5 に答える 5

2

次のように、 /etc/security/limits.confを使用してこの変更を行うことをお勧めします。

<user>   soft   core   unlimited
<user>   hard   core   unlimited

ここにある手順と同様に、Augeas を使用してこれを行うことができます。正確なニーズ/ユースケースはわかりませんが、少なくともその方法を検討してください!

于 2013-03-25T14:55:56.203 に答える
1

もう 1 つの方法は、erwbgy puppet モジュールをインストールして、次のように定義するだけです。

include limits
limits::entry { 'my-limits':
    domain => $user,
    type   => 'soft',
    item   => 'core',
    value  => 'unlimited',
}

あなたのパペットスクリプトで。

于 2013-12-06T00:07:59.517 に答える
0

コマンドが間違っています。次のようにする必要があります。

command => "/bin/bash -c 'ulimit -c unlimited'"
于 2013-03-25T19:29:40.030 に答える
0

システム全体の ulimit (ルート) を好みの最高値に増やします

* soft nofile 1000000
* hard nofile 250000

次に、httpd ユーザーなどのユーザー固有の制限を追加します。

httpd hard nofile 100000
httpd soft nofile 25000

注: この場合、httpd はシステムの上限 (*) を超えることはできません。たとえ httpd ユーザーにより高い値を与えたとしても、sysetm はそれを許可しません。

プロセスが新しい値を取得するために、プロセスを再起動する必要がある場合があります (システムを再起動する必要はありません)。

そうでない場合は、プロセスを再起動してください。

于 2013-10-11T14:17:59.343 に答える
0

/etc/security/limits.conf を使用して制限を変更した場合は、プロセスを再起動して新しい制限を使用する必要があります。

たとえば、パペット エージェントがサービスを再起動する必要がある場合 ("service myservice restart")、サービスは、ルート ユーザーと古い制限で実行されているパペット プロセスから開始されます。

そのため、/etc/init.d 内のサービスのサービス初期化スクリプトは、ログインを強制する必要があります。たとえば、「su」または「sudo」でユーザーを変更して、新しい制限を使用してサービスを強制する必要があります。

http://linux.die.net/man/5/limits.confを参照してください。

「また、すべての制限設定はログインごとに設定されることに注意してください。それらはグローバルではなく、永続的でもありません。セッションの間のみ存在します。」

于 2013-04-19T13:05:14.017 に答える