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

另一种方法是安装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

如果您使用 /etc/security/limits.conf 更改限制,则必须重新启动进程以使它们使用新限制。

例如,如果您的 puppet 代理需要重新启动服务(“service myservice restart”),则该服务将从以 root 用户和旧限制运行的 puppet 进程启动。

因此 /etc/init.d 中服务的服务初始化脚本必须强制登录,例如使用“su”或“sudo”更改用户,以强制使用新限制的服务。

http://linux.die.net/man/5/limits.conf

“另外,请注意,所有限制设置都是在每次登录时设置的。它们不是全局的,也不是永久的;仅在会话期间存在。”

于 2013-04-19T13:05:14.017 回答
0

将系统范围的 ulimit (root) 增加到您喜欢的最高值

* soft nofile 1000000
* hard nofile 250000

然后添加用户特定的限制,例如 httpd 用户

httpd hard nofile 100000
httpd soft nofile 25000

注意:在这种情况下 httpd 不能超过系统上限 (*),即使你给 httpd 用户一个更高的值,sysetm 也不会允许

进程可能需要重新启动(无需重新启动系统)才能获取新值,但是您可以通过查看以下内容来仔细检查它们是否已获取它:$cat /proc//limits

如果没有,那么只需重新启动该过程。

于 2013-10-11T14:17:59.343 回答