在我的机器上打开的文件数量的硬限制设置为1024。 我改变了/etc/security/limits.conf并添加了“idror hard nofile 65000”。 在我的shell中,我尝试了ulimit -n 65000.我得到'ulimit:值超过硬限制' 在我的shell我试图ulimit – 65000.我得到'ulimit:不能提高硬限制' 那么怎样才能在不重启的情况下增加打开文件的限制?
我在/etc/security/limits.conf设置了一些值如下: * hard stack 204800 * hard nofile 8192 然后重新启动服务器。 我也删除了/etc/security/limits.d/90-nproc.conf文件 但是, ulimit命令仍然列出一些旧的/默认值: # ulimit -s 10240 # ulimit -n 1024 我运行RHEL 6.2 64-bit 这里有什么问题? 在limits.conf我的语法错了吗? 为什么服务器重新启动后,它不尊重limits.conf值? 顺便说一句,我已经超级用户发布了这个问题,但没有得到命中,所以试图在我的运气在serverfault。
Ulimit手册页build议-r选项将设置这个,但它似乎只对root用户有效,没有等同于通过/ etc / security / limits设置它? 有任何想法吗?
当一个进程产生一个子shell时, ulimit是如何inheritance的? 是由用户,按壳还是组合? 具体而言,这是在HP Server Automation作业在某些受pipeAIX设备上出现故障的情况下发现的,因为软硬限制之间存在交互。 简而言之,代理(以root身份运行并在处理来自SA的命令时生成一个子shell)无法处理一些作业,因为它的子shell正在打ulimit 。 增加ulimit解决了这个问题,但ulimit是如何inheritance的,以及是否需要提高软限制或硬限制(或两者)限制的问题是敞开的。 这个问题的答案是什么? 它可能是特定于AIX的,也可能是跨Unix / Linux的变体 – 哪一个更好。
我正在进行的一个项目是将某些傀儡应用的ulimit设置从“听起来正确的”移到了基于环境的dynamic分配。 这是针对单一应用程序环境的,所以我最担心的是防止应用程序资源匮乏,同时保持内核和实用程序空间足够多的句柄,而不是做他们应该做的事情。 我们从应用程序团队持续请求moar文件句柄! 所以我试图find一个方法来处理这个问题。 所以我做了一个傀儡事实: Facter.add('app2_nofile') do confine :kernel => 'Linux' setcode do kernel_nofile = `/bin/cat /proc/sys/fs/file-max`.chomp app2_limit = (kernel_nofile.to_i * 0.85).round app2_limit end end 这就是锡上说的。 它取得/proc/sys/fs/file-max定义的内核值,取其中的85%,剩下15%用于系统使用。 在另一个puppet资源中使用这个::app2_nofile事实来设置一个软和硬的nofile ulimit,以便更新/etc/security/limits.conf,并且tada! 简单! 如果他们想要更多的文件句柄,他们必须更聪明地编写应用程序。 除此之外,它没有工作。 当试图用nofile ulimit用户打开一个用户会话( su app2_user – )时,我们得到错误信息: 无法打开会话 哪个不好。 显然,有一个独立于简单限制的上限。 或者,也许我正在理解他们如何从根本上工作。 nofile限制如何相互影响,会导致会话无法创build? 进一步的testing表明,上限可能是一个静态的边界,或者比简单的百分比更复杂。 一个最大文件大小为797,567的小RAM系统可以将这个ulimit设置得非常高,我就不会再生产了。 在一个更大的系统上,我可以将这个ulimit设置为大约63%,然后才能“打开会话”。 现在我没有更大的内存来testing这个比例是否随着更大的内存而变化。 我得到一个audit.log条目: type=USER_START msg=audit(1416420909.479:511331): user pid=5022 uid=0 auid=1194876420 ses=44826 […]
手动我可以通过ulimit -n 20000设置文件描述符限制,它工作正常。 为了在机器重启之后也为每个用户设置这个限制,我可以添加吗? * soft nofile 20000 到/etc/security/limits.conf ? 我无法尝试,因为我不能真正重新启动服务器。
我有一个Ubuntu系统,我有一个定期运行的脚本。 我需要限制这个脚本可以使用的最大内存量。 AFAIK ulimit是这样做的命令,但我不能得到它的工作。 例如,我有以下脚本: #! /bin/bash ulimit -m 1024 X="x" seq 100 | while read LINE ; do X="$X$X" done 这应该使$X变大,这个例子就是我想要限制的东西。 然而ulimit调用似乎不起作用。 我可以运行脚本OK,它不会死, top显示脚本得到大量的内存。 我究竟做错了什么? 我怎样才能强制这个脚本永远不会超过一定量的内存?
我想在ubuntu(所有进程,所有用户)上设置全系统的ulimit。 我该如何设置? 谢谢 J.P
在Linux上运行的服务器应用程序通常需要大量的打开文件处理程序,例如。 HBase ulimit , Hadoop epoll限制 这个wiki条目应该作为Linux文件限制configuration的文件。 什么是软硬限制? 如何控制硬限制? 如何控制软限制? 内核fs.file-max和用户ulimit -n有关系吗? 请描述你的configuration有效的Linux发行版,因为不同的供应商configuration不同的东西。 更新根据lstvan回答: 对于希望自动化的人来说,至less在Ubuntu服务器上,你可以把它放在你的机器安装脚本中: echo 'fs.file-max = 65000' > /etc/sysctl.d/60-file-max.conf echo '* soft nofile 65000' > /etc/security/limits.d/60-nofile-limit.conf echo '* hard nofile 65000' >> /etc/security/limits.d/60-nofile-limit.conf echo 'root soft nofile 65000' >> /etc/security/limits.d/60-nofile-limit.conf echo 'root hard nofile 65000' >> /etc/security/limits.d/60-nofile-limit.conf
如何报告比ulimit所说的限制更多的打开的文件? prod_web3(i-ca0b05aa):~$ sudo lsof | wc -l 4399 prod_web3(i-ca0b05aa):~$ ulimit -n 1024