Unix systems put various sensible limits on the use of different resources. Open files, number of processes, locked files, cpu usage, etc can be limited.
/proc/*/limitsshows the current limits set for a running process. These limits are set based on a number of possible configuration locations.
ulimitUtility for setting limits at a user-level for system-wide resource usage, which is useful for shared systems. These are limits for the sum of all processes owned by a user.
/etc/security/limits.confPart of linux's pam_limits, the persistent ulimits configuration file. Sets for logged in users, not for system processes
pam_module, pluggable authentication module/etc/security/limits.d/* are other configurations loaded after limits.conf
pam_limits are enforced when a session is opened. They do not affect daemon processes
/etc/sysctl.confContains system-wide configurations, kernel-level configurations
source for file descriptors limit