我想知道如何使用Puppets exec类型运行ulimit命令。 ulimit的问题似乎是它不是二进制文件所以必须在它前面使用/ bin / bash调用它。我试图将核心文件大小更改为无限制。我有这个,但不承认ulimit。
exec {"ulimit":
command => "/bin/bash ulimit -c unlimited",
}
我可以在命令行中执行'ulimit -c unlimited',它会更改值没问题。问题是通过Puppet这样做。任何帮助都会很棒。
答案 0 :(得分:2)
我建议尝试使用 /etc/security/limits.conf 进行此更改,例如:
<user> soft core unlimited
<user> hard core unlimited
您可以使用与说明found here类似的Augeas。不确定您的确切需求/用例,但至少要考虑大道!
答案 1 :(得分:1)
其他方法是安装erwbgy puppet module并简单定义:
include limits
limits::entry { 'my-limits':
domain => $user,
type => 'soft',
item => 'core',
value => 'unlimited',
}
在你的木偶剧中。
答案 2 :(得分:0)
命令错误,应该是:
command => "/bin/bash -c 'ulimit -c unlimited'"
答案 3 :(得分:0)
如果使用/etc/security/limits.conf更改限制,则必须重新启动进程以使其使用新限制。
例如,如果您的木偶代理需要重新启动服务(“service myservice restart”),则服务将从与root用户一起运行的puppet进程启动,并具有旧限制。
因此,/ etc / init.d中服务的服务init脚本必须强制登录,例如使用“su”或“sudo”更改用户,以使用新限制强制服务。
请参阅http://linux.die.net/man/5/limits.conf
“另外,请注意,所有限制设置都是按照登录设置的。它们不是全局的,也不是永久性的;仅在会话期间存在。”
答案 4 :(得分:0)
将系统范围的ulimit(root)增加到您喜欢的最高值
* soft nofile 1000000
* hard nofile 250000
然后添加用户特定的限制,例如对于httpd用户
httpd hard nofile 100000
httpd soft nofile 25000
注意:在这种情况下,httpd不能超过系统上限(*),sysetm将不允许它,即使你给了httpd用户更高的值
可能需要重新启动进程(无需重新启动系统)才能获取新值,但是您可以通过查看以下内容来仔细检查是否已经提取了它们: $ cat / proc // limits
如果没有,则只需重新启动该过程。