OS全体での上限
% cat /proc/sys/fs/file-max
816171
今まで開いたディスクリプタ、現在開いているディスクリプタ、上限ディスクリプタの順番
% cat /proc/sys/fs/file-nr 1120 0 816171
シェルから実行したプロセスの上限はuname -nを見れば良い
% ulimit -n 1024
実行中のプロセスの上限を見たい場合は、/proc/$PID/limitsを見る良い
% ps -fe | egrep '[t]d-agent' td-agent 18392 1 0 09:31 ? 00:00:00 /usr/lib/fluent/ruby/bin/ruby /usr/sbin/td-agent --daemon /var/run/td-agent/td-agent.pid --log /var/log/td-agent/td-agent.log td-agent 18395 18392 8 09:31 ? 00:30:03 /usr/lib/fluent/ruby/bin/ruby /usr/sbin/td-agent --daemon /var/run/td-agent/td-agent.pid --log /var/log/td-agent/td-agent.log % cat /proc/18392/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 0 unlimited bytes Max resident set unlimited unlimited bytes Max processes 63766 63766 processes Max open files 8192 8192 files Max locked memory 65536 65536 bytes Max address space unlimited unlimited bytes Max file locks unlimited unlimited locks Max pending signals 63766 63766 signals Max msgqueue size 819200 819200 bytes Max nice priority 0 0 Max realtime priority 0 0 Max realtime timeout unlimited unlimited us % fgrep 'Max open files' /proc/18392/limits Max open files 8192 8192 files
ちなみにデフォルトの1024じゃない理由は、起動スクリプトのdo_start()でulimit -n 8019してるからのようです。
fgrep -n ulimit /etc/init.d/td-agent 76: ulimit -n 8192
/proc/ディレクトリ奥が深い。調べると面白そう。