linux命令关闭句柄,Linux 常用查询句柄的命令(Too many open files)

摘要

查询命令

进程占用的句柄总数

lsof -n | wc -l

查看哪一个进程占用的句柄最多

lsof -n|awk '{print $2}'|sort|uniq -c|sort -nr|more

第一列 是 占用句柄数;

第二列 是 进程号 PID;

查询某一个进程的占用句柄

lsof |grep PID

第一列:进程名称

第二列:PID

第三列:进程所有者

第四列:文件描述符

第五列:文件类型

Linux 设置句柄命令

方法一

第一步:修改linux系统参数。vi /etc/security/limits.conf 添加

* soft nofile 65535

* hard nofile 65535

这里 * 表示所有用户, 但有的系统不认, 需要具体的用户名, 比如:

root soft nofile 65535

root hard nofile 65535

第二步: 编辑 etc/pam.d/login , 确保有如下行:

session required pam_limits.so

92dbad4cd379916b2348e4880f193032.png

第三步:修改以后保存,注销当前用户,重新登录

第四步:验证。

使用 ulimit -Hn 和 ulimit -Sn 命令可以分别查看当前进程用户的 hard 和 soft 的限制数.

或者当前用户启动某个程序后, 通过 cat /proc//limits (pid是该进程的, 或者其随便一个子进程的pid)

方法二

ulimit -HSn 65536

简单的执行这个命令,只有在当前回话有效。如果想永久保存下来,可以修改.bash_profile文件,可以修改 /etc/profile 把上面命令加到最后.

附录

ulimit -a 查看当前用户的文件句柄限制

ulimit -a

用户级别的句柄数限制修改。

修改 /etc/security/limits.conf 增加下面的代码:

用户名(或者用*表示所有用户) soft nofile 65535

用户名 hard nofile 65535

有两种限制,一种是soft软限制,在数目超过软限制的时候系统会给出warning警告,但是达到hard硬限制的时候系统将拒绝或者异常了。

修改之后可能需要重启shell生效。

系统级别的句柄数限制修改。

sysctl -w fs.file-max 65536

或者

echo "65536" > /proc/sys/fs/file-max

两者作用是相同的,前者改内核参数,后者直接作用于内核参数在虚拟文件系统(procfs, psuedo file system)上对应的文件而已。

可以用下面的命令查看新的限制

sysctl -a | grep fs.file-max

或者

cat /proc/sys/fs/file-max

修改内核参数

/etc/sysctl.conf

echo "fs.file-max=65536" >> /etc/sysctl.conf

sysctl -p

查看系统总限制 命令:

cat /proc/sys/fs/file-max

查看整个系统目前使用的文件句柄数量命令:

cat /proc/sys/fs/file-nr

查看某个进程开了哪些句柄 :

lsof -p pid

某个进程开了几个句柄 :

lsof -p pid |wc -l

也可以看到某个目录 /文件被什么进程占用了,显示已打开该目录或文件的所有进程信息 :

lsof path/filename

参考文档

tomcat环境下服务器文件句柄耗尽(Too Many Open Files)的问题排查

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值