Linux 文件句柄

linux 文件句柄

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 查看所有文件句柄
$ lsof

#查看网络句柄,linux中一切皆文件(内存、网络、硬盘。。。)
lsof |grep IPv4
lsof |grep TCP

# 查看系统默认的最大文件句柄数,系统默认是1024
$ ulimit -n
1024

# 查看当前进程打开了多少句柄数,其中第一列是打开的句柄数,第二列是进程ID
$ lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

#Linux有硬性限制和软性限制。可以通过ulimit来设定这两个参数。方法如下,以root用户运行以下命令:
$ ulimit -HSn 4096
# 以上命令中,H指定了硬性大小,S指定了软性大小,n表示设定单个进程最大的打开文件句柄数量,注意重启后失效

为了每次系统重新启动时,都可以获取更大的ulimit值,将ulimit -HSn 4096加入到/etc/profile 文件底部。
用户登录的时候执行sh脚本的顺序:

  • /etc/profile.d/file
  • /etc/profile
  • /etc/bashrc
  • /user/.bashrc
  • /user/.bash_profile

由于ulimit -n的脚本命令加载在第二部分,用户登录时由于权限原因在第二步还不能完成ulimit的修改,所以ulimit的值还是系统默认的1024。所以想彻底改变这种问题,就必须做如下操作:修改/etc/security/limits.conf

里面有很详细的注释,比如:

  • soft nofile 2048
  • hard nofile 32768

就可以将文件句柄限制统一改成软2048,硬32768,那么什么是软限制,什么是硬限制。硬限制是实际的限制,而软限制,是warnning限制,只会做出warning。

-------------本文结束感谢您的阅读-------------
坚持分享,您的支持将鼓励我继续创作!
0%