优化Linux文件打开最大数(软限制,硬限制,文件描述符,描述符表)
为了防止失控的进程破坏系统的性能,UNIX和Linux会跟踪进程使用的大部分资源,并允许用户和系统管理员使用对进程的资源限制,例如控制某个进程打开的系统文件数、对某个用户打开系统进程数进行限制等,一般限制手段包括软限制和硬限制。具体说明如下:
•软限制(soft limit):内核实际执行的限制,任何进程都可以将软限制设置为任意小于或等于对进程限制的硬限制的值、最大线程数(noproc)和文件数(nofile)。
•硬限制(hard limit):可以在任何时候任何进程中设置,但硬限制只能由超级用户修改。
Linux系统一切皆文件,对Linux进行各种操作,实际就是对文件进行操作,文件可分为普通文件、目录文件、链接文件和设备文件。而**文件描述符(file descriptor)**是内核为了高效管理已被打开的文件所创建的索引,其值是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。
Linux系统默认已经打开的文件描述符包括STDIN_FILENO 0表示标准输入、STDOUT_FILENO 1表示标准输出、STDERR_FILENO 2表示标准错误输出,默认打开一个新文件,它的文件描述符为3。
每个文件描述符与一个打开文件相对应,不同的文件描述符可以指向同一个文