首先可以通過ulimit –a 命令來查看如下:Redhat系統[root@120lg_3 ut]# ulimit -acore file size (blocks, -c) 0data seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedmax locked memory (kbytes, -l) 4max memory size (kbytes, -m) unlimitedopen files (-n) 1024pipe size (512 bytes, -p) 8stack size (kbytes, -s) 10240cpu time (seconds, -t) unlimitedmax user processes (-u) 7168virtual memory (kbytes, -v) unlimited此處的1024是每個進程開啟的最大檔案數,對於系統的最大限制可以這樣查看[root@120lg_3 ut]# more /proc/sys/fs/file-max157280file-max是整機可以開啟的fd數目,對確定的進程仍然是1024個,這個值定義在limits.h裡:
#define NR_OPEN 1024
只有root可以用ulimit修改這個值,象這樣:
su
ulimit -n 8096
su urname
runprog solaris系統# ulimit -acore file size (blocks, -c) unlimiteddata seg size (kbytes, -d) unlimitedfile size (blocks, -f) unlimitedopen files (-n) 256pipe size (512 bytes, -p) 10stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 29995virtual memory (kbytes, -v) unlimited HP-UX系統# ulimit -acore file size (blocks, -c) 2097151data seg size (kbytes, -d) 1048576file size (blocks, -f) unlimitedmax memory size (kbytes, -m) unlimitedopen files (-n) 512pipe size (512 bytes, -p) 16stack size (kbytes, -s) 8192cpu time (seconds, -t) unlimitedmax user processes (-u) 257virtual memory (kbytes, -v) unlimited 以上的open files都是系統預設的初始值。 對於solaris可以通過plimit PID 來取得該進程的一些限制資訊,如# plimit 11: /sbin/init resource current maximum time(seconds) unlimited unlimited file(blocks) unlimited unlimited data(kbytes) unlimited unlimited stack(kbytes) 8192 unlimited coredump(blocks) unlimited unlimited nofiles(descriptors) 256 65536 vmemory(kbytes) unlimited unlimited HP-UX也可以通過kctune 命令來查看限制資訊,如# kctune |grep maxfiles*Tunable Value Expression Changes maxfiles 512 Default maxfiles_lim 4096 Default Immed# kctune |grep nfile nfile 16384 Default Auto注意:此處的maxfiles 為每個進程可以開啟的最大檔案數(軟體系統限制)此處的maxfiles_lim為每個進程可以開啟的最大檔案數(硬體系統限制)也就是說你可以通過改變軟體限制“maxfiles”的值然後從新編譯核心來達到修改的目的,但是還會受到硬體最大上限的限制。nfile則是表示所有進程開啟的最大檔案數的總數限制。