文章目录


前言

Linux 系统中把一切都看做是文件,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行 I/O 操作的系统调用都会通过文件描述符。


  • 检查某个进程的文件描述符
#以 sshd 为例,首先找到需要检查的进程 id,找到的进程 id 为 1063
[root@c7-1 ~]#ps aux|grep sshd
root       1063  0.0  0.1 112920  4360 ?        Ss   04:49   0:00 /usr/sbin/sshd -D
root      88389  0.0  0.1 163616  6124 ?        Ss   09:43   0:00 sshd: root@pts/1
root     102189  0.0  0.0 112732   968 pts/1    S+   13:03   0:00 grep --color=auto sshd

#查看该进程的限制,在 Max open files 那一行,可以看到当前设置中最大文件描述符的数量为 1024
[root@c7-1 ~]#cat /proc/1063/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             14959                14959                processes 
Max open files            1024                 4096                 files     
Max locked memory         65536                65536                bytes     
Max address space         unlimited            unlimited            bytes     
Max file locks            unlimited            unlimited            locks     
Max pending signals       14959                14959                signals   
Max msgqueue size         819200               819200               bytes     
Max nice priority         0                    0                    
Max realtime priority     0                    0                    
Max realtime timeout      unlimited            unlimited            us        

#该进程占用 17 个文件描述符
[root@c7-1 ~]#cat /proc/1063/limits | wc -l
17
  • 查看当前系统使用的打开文件描述符数
[root@c7-1 ~]#cat /proc/sys/fs/file-nr
8992	0	378170
#其中第一个数表示当前系统已分配使用的打开文件描述符数,第二个数为分配后已释放的(目前已不再使用),第三个数等于 file-max
  • 进程最多打开的 fd
查看:ulimit -n
临时设置:ulimit -n 1000000

Logo

更多推荐