Frank Fu
Frank Fu

Reputation: 778

What does "soft/hard nofile" mean on Linux

When I tried to install a software on RedHat EL5, I got the error that the expected value of soft/hard nofile is 4096 while the default is 1024. I managed to increase the number, but I don't know what the parameters are. Are they refering to soft link and hard link?

The way I change it is:

A) modify the /etc/security/limits.conf

user soft nofile 5000
user hard nofile 6000

B) modify the /etc/pam.d/system-auth

session required /lib/security/$ISA/pam_limits.so

C) modify /etc/pam.d/login

session required pam_limits.so

After making the change (by switching to root). It seems that I have to reboot machine to make it effect. But some post online say that it should come to effect right after making the change. Would appreciate if someone can clarify it.

Upvotes: 21

Views: 69151

Answers (3)

slm
slm

Reputation: 16426

As an additional aside, some distros include /etc/security/limits.d where "snippets" of limit configurations can be placed. You can create files such as this:

$ ll /etc/security/limits.d/
-rw-r--r--. 1 root root 191 Aug 18 10:26 90-nproc.conf
-rw-r--r--  1 root root  70 Sep 29 12:54 90-was-filedesc.conf

With files containing whatever limits you want to set:

$ more /etc/security/limits.d/90-nproc.conf
# Default limit for number of user's processes to prevent
# accidental fork bombs.
# See rhbz #432903 for reasoning.

*          soft    nproc     1024
root       soft    nproc     unlimited

$ more /etc/security/limits.d/90-was-filedesc.conf
root       hard    nofile    20000

I find using this method to manage these types of overrides much cleaner than mucking with /etc/security/limits.conf.

Also if you want to set both soft/hard to the same value you can use the - as the type.

$ more /etc/security/limits.d/90-was-filedesc.conf
root       -       nofile    20000

Upvotes: 3

Jacek Konieczny
Jacek Konieczny

Reputation: 8604

These are: a 'soft' and a 'hard' limit for number of files a process may have opened at a time. Both limit the same resource (no relation to hard links or anything). The difference is: the soft limit may be changed later, up to the hard limit value, by the process running with these limits and hard limit can only be lowered – the process cannot assign itself more resources by increasing the hard limit (except processes running with superuser privileges (as root)).

Similar limits can be set for other system resources: system memory, CPU time, etc. See the setrlimit(2) manual page or the description of your shell's ulimit build-in command (e.g. in the bash(1) manual page.

Upvotes: 38

Chris
Chris

Reputation: 1333

No reboot is required, but /etc/security/limits.conf is only processed when /lib/security/pam_limits.so runs, which is at login time, and the values are inherited by child processes. After a new login, anything under that login will inherit the values specified.

Upvotes: 4

Related Questions