美文网首页
20、文件描述符

20、文件描述符

作者: 一个反派人物 | 来源:发表于2021-06-30 14:32 被阅读0次

1 文件描述符概念

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

  • 每个文件描述符会与一个打开的文件相对应
  • 不同的文件描述符也可能指向同一个文件
  • 相同的文件可以被不同的进程打开,也可以在同一个进程被多次打开

2 文件描述符表

进程级文件描述符表 系统级文件描述符表
(open file table)
i-node表
记录内容 1.文件描述符
2.文件指针(open file handle)
1.当前文件偏移量
2.状态标识
3.文件访问模式(读,写,读和写)
4.对该文件i-node对象的引用
5.文件类型(常规文件、套接字、FIFO...)
6.访问权限
7.一个指向该文件所持有的所有表的指针
8.文件的各种属性
9.与信号驱动相关的设置
1.文件类型
2.文件锁

3 查看进程文件描述符限制

cat /proc/pid号码/limits


soft 指的是当前系统生效的设置值
hard 指的是系统中所能设定的最大值

ulimit -n

4 修改进程文件描述符限制

用户级限制
(只对通过PAM登录的用户有效,对systemd的service资源不生效)
系统级限制
查看 ulimit -n 1.sysctl -a | grep -i file-max
2.cat /proc/sys/fs/file-max
修改
(重启失效)
ulimit -SHn 65535 1.sysctl -w fs.file-max=65535
2.echo 65535>/proc/sys/fs/file-max
修改
(永久生效)
修改配置文件:
/etc/security/limits.conf
最后一行加入:
* soft nofile 65535
* hard nofile 65535
修改配置文件:
/etc/sysctl.conf
在任意位置加入:
fs.file-max=65535
执行(不执行则不生效):
sysctl -p

对于nginx,修改/etc/security/limits.conf就可以,同时需要在nginx配置文件中修改worker_rlimit_nofile

相关文章

  • 第三章 文件I/O

    文件描述符 所有打开的文件都通过文件描述符引用。操作(读写)该文件描述符就相当于操作该文件。文件描述符是一个非负的...

  • 第三章 文件IO

    对于内核而言,所有打开的文件都通过文件描述符引用,文件描述符是一个非负整数文件描述符标准符号常量文件描述符0标准输...

  • ios进阶路线 shell脚本语言基础教程(四)

    上篇我们讲了文件描述符还有自定义文件描述符,补充一下如何关闭自定义的文件描述符 语法:exec 描述符>&- 案例...

  • Linux中文件描述符,重定向与标准输入输出

    Linux中文件描述符,重定向与标准输入输出 文件描述符:内核(kernel)利用文件描述符(file descr...

  • 文件I/O和记录锁

    文件描述符: 文件描述符是一个非负整数,所有打开的文件都通过文件描述符引用。按照惯例:0(STDIN_FILENO...

  • 认识安卓的文件描述符FileDescriptor

    理解文件描述符 文件描述符(FileDescriptor) 这是Unix/Linux系统文件操作的相关概念,And...

  • ulimit ps dmesg which stat 命令小结

    ulimit 设置查看文件描述符命令 ulimit -n查看文件描述符 ulimit -SHn 65535设置文件...

  • 文件描述符

    内核(kernel)利用文件描述符(file descriptor)来访问文件。文件描述符是非负整数。打开现存文件...

  • Shell--呈现数据

    文件描述符 用stdout和stderr文件描述符来在多个位置生成输出,重定向相应的文件描述符 临时重定向 在脚本...

  • Linux I\O总结 -- 基础概念篇

    文件描述符 0, 1, 2 文件描述符(fd) 0 is standard in (stdin),1 is sta...

网友评论

      本文标题:20、文件描述符

      本文链接:https://www.haomeiwen.com/subject/raxjultx.html