知道有两种限制很重要:
- 一个硬限制是只有root配置。这是软限制的最大可能值(限制)。
- 一个软限制可以由普通用户设置。这是实际的限制。
单个会话的解决方案
在外壳中设置软限制:
ulimit -Sn 2048
此示例将实际限制提高到2048,但是仅当硬限制(检查:)ulimit -Hn
相同或更高时,命令才会成功。如果需要更高的值,请使用以下方法之一提高硬极限。限制是针对每个进程设置的,它们是由新产生的进程继承的,因此,在同一Shell中执行此命令之后运行的所有命令都将具有新的限制。
在单个会话中更改硬限制
这是不容易的,因为只有root可以更改硬限制,并且切换到root后,您必须切换回原始用户。这是解决方案sudo
:
sudo sh -c "ulimit -Hn 9000 ; exec su \"$USER\""
全系统解决方案
在Debian和许多其他使用的系统中,pam_limits
您可以在/etc/security/limits.conf
和中的文件中设置系统范围的限制/etc/security/limits.d
。conf文件包含描述。示例行:
@webadmins hard nofile 16384
@webadmins soft nofile 8192
webadmins
登录后,将为组中的用户设置硬限制和默认软限制。
其他限制
硬限制值受打开文件描述符值的全局限制限制,/proc/sys/fs/file-max
默认情况下,在现代Linux发行版中,该值相当高。此值受NR_OPEN
内核编译期间使用的值限制。
有没有更好的解决方案?
也许您可以检查输入的所有*log
文件是否tail -f
是真正需要监视的活动文件。其中一些可能已经关闭以进行日志记录,您可以只打开少量文件。