ulimit is a built-in shell command in Linux that manages resource limits for shell processes and their children. It controls constranits like maximum open files, memory usage, and core file sizes. The syntax includes options such as -a to display all current limits, -c for core file size in blocks, -d for data segment size in KB, -f for file size, -m for resident set size, -n for open file descriptors, -p for pipe size, -s for stack size, -t for CPU time, -u for user processes, and -v for virtual memory.
Changes made with ulimit are temporary and revert after system restart. To view all current limits, run:
ulimit -a
To increase the maximum open files for a user, useful in performance testing, execute:
ulimit -n 20000
Non-root users are typicaly restricted to 4096; higher values require sudo or root access. Adjust the maximum user processes with:
ulimit -u 70000
Monitor file usage by checking the total open files in the system:
lsof | wc -l
For a specific process, identify its open files:
lsof -p 5678 | wc -l
Verify the current limit for a process:
cat /proc/5678/limits
System-wide maximum open files is found at:
cat /proc/sys/fs/file-max
lsof requires root privileges to access kernel data and file details.
For permanent adjustments, edit the configuration file /etc/security/limits.conf. Add entries like username hard nofile 50000 to set persistent limits.