When you want to find the maximum number of file descriptor you can open, you can use the following:
# ulimit -n 1024
This will return the soft limit i.e. the current limit which can still be increased.
To find out the hard limit i.e. the maximum value you can set, use:
# ulimit -Hn 8192
Now another process than your current shell might have been started with different limits. You can’t give ulimit a process ID to tell you what’s the limit for a different process. But you can read it from /proc/
# cat /proc/13106/limits Limit Soft Limit Hard Limit Units Max cpu time unlimited unlimited seconds Max file size unlimited unlimited bytes Max data size unlimited unlimited bytes Max stack size 8388608 unlimited bytes Max core file size 1024 unlimited bytes Max resident set 7077048320 unlimited bytes Max processes 63450 63450 processes Max open files 4096 8192 files Max locked memory 65536 262144 bytes Max address space 1572864000 1572864000 bytes Max file locks unlimited unlimited locks Max pending signals 63450 63450 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us
So if you want to get the soft limit for the other process, do the following:
# grep "Max open files" /proc/13106/limits | awk '{ print $4; }' 4096