I try to increase open file limit for certain user on CentOS 5.5 Linux. I added a new line to /etc/security/limits.conf:

seed     hard    nofile          10240

Then do test:

runuser -s /bin/bash - seed -c "ulimit -S -c 0>/dev/null 2>&1; ulimit -a"
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 8185
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) unlimited
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited

And as you can see - open file limit is still 1024. If I set up the limit as 1000, it will be applied. So, I cannot setup the limit more than 1024.

How can I do that?? I need to set up the settings only for 1 user, not system-wide.


I suspect runuser doesn't go through PAM's "login" process that applies limits.conf, or maybe pam_limits.so is disabled. In Debian, at least, /etc/pam.d/su has pam_limits.so commented out so that the limits are inherited from the user running su.

| improve this answer | |
  • [root@seedbox01 ~]# cat /etc/passwd | grep seed seed:x:501:501::/home/seed:/bin/bash – Andrey Zentavr Oct 28 '10 at 18:54
  • [root@seedbox01 ~]# cat /etc/pam.d/runuser #%PAM-1.0 auth sufficient pam_rootok.so session optional pam_keyinit.so revoke session required pam_limits.so session required pam_unix.so – Andrey Zentavr Oct 28 '10 at 18:55
  • This is definitely the reason. I've deleted my answer as you were first :). – Matthew Ife Oct 17 '13 at 19:07

To increase open file limit for certain user on CentOS 5.5 Linux:

1 - in file '/etc/security/limits.conf' add: - http://gerardnico.com/wiki/linux/limits.conf

# seed osuser - extended max number of open files
seed    hard    nofile    10240

# End of file

2 - in file '/etc/profile' or in '/home/seed/.bash_profile' add:

if [ $USER = "seed" ]; then
        ulimit -n 10240
| improve this answer | |
  • Suggestion #1 did not helped me, but #2 - yes. – Andrey Zentavr Oct 28 '10 at 18:59

On linux systems, there are three places where file limits are set, each independent of the other:

  1. the kernel, as in /proc/sys/fs/file-max, controlled via sysctl fs.filemax or /etc/sysctl.conf

  2. the ulimit in the shell, as controlled by ulimit -n

  3. PAM, as set via /etc/security/limits.conf

The number that takes precedence and actually determines the limit on your processes is whatever is the LEAST of the above three.

| improve this answer | |

Using "ulimit -a" you see the soft limit, 1024 in redhat 5.8 is the default soft limit

vim /etc/security/limits.conf
user01  soft    nofile  1024
user01  hard    nofile  2048

ulimit -Sn
ulimit -Hn

reading proc

grep "Max open files" /proc/$$/limits
Max open files            1024                 2048                 files
| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.