我为此绞尽脑汁,不明白为什么它不起作用。我希望有人能解释一下,或者给我一些调查途径的建议。
我有一个 Red Hat 7.3 系统(不要问),需要增加用户的打开文件限制wls81
。我以为我只是无法控制它,但看起来似乎只有我需要更改的用户才有问题。我已将以下几行添加到/etc/security/limits.conf
:
wls81 soft nofile 10100
wls81 hard nofile 10240
madhatta soft nofile 10100
madhatta hard nofile 10240
pam_limits.so
据我所知,被正确调用:
[madhatta@server madhatta]$ sudo grep limits /etc/pam.d/*
/etc/pam.d/login:session required /lib/security/pam_limits.so
/etc/pam.d/sshd:session required /lib/security/pam_limits.so
/etc/pam.d/su:session required /lib/security/pam_limits.so
/etc/pam.d/system-auth:session required /lib/security/pam_limits.so
当我以自己的身份 ssh 登录时,我获得了新的软限制,并且可以增加到硬限制:
desktop> ssh server
Last login: Thu May 10 13:20:13 2012 from a.b.c.d
[madhatta@server madhatta]$ ulimit -n
10100
[madhatta@server madhatta]$ ulimit -n 10200
[madhatta@server madhatta]$ ulimit -n
10200
[madhatta@server madhatta]$ ulimit -n 10300
bash: ulimit: cannot modify open files limit: Operation not permitted
但是当我以用户身份 ssh 登录时wls81
,我无法:
desktop> ssh wls81@server
Last login: Wed May 9 22:29:33 2012 from a.b.c.d
[wls81@server wls81]$ ulimit -n
1024
[wls81@server wls81]$ ulimit -n 10000
bash: ulimit: cannot modify open files limit: Operation not permitted
我对每个用户都做了同样的事su -
。老实说,我不明白为什么这个用户无法重置其ulimit
帐户。有人有什么想法吗?
答案1
好吧,谜团解开了。我发现当我这样做时,su - wls81
我得到了 1024 的限制,但当我刚刚这样做时,su wls81
我得到了新的更高的限制。事实证明,wls81.bash_profile
调用了另一个脚本,该脚本又调用了系统上完全不同的用户的环境设置脚本,该脚本执行了ulimit -n 1024
.
当我删除该行时,wls81 现在获得了新的限制。
答案2
我认为您可能还需要检查并可能设置内核中打开文件的最大文件描述符:
sudo systcl fs.file-max
并编辑 /etc/sysctl.conf 以使更改永久生效。