linux查看进程打开的文件句柄以及如何修改教程

作者:wendy | 创建时间: 2023-05-27
各位好,对于linux内的各个应用程序,都有一个文件句柄的限制。默认情况下一般的应用都完全足够应用,但是如何象squid、mysql、java等单进程处理大量请求的应用来说就有 点捉襟见肘了。如果单个进程打开的文件句柄数量超过了系统定义的值...
linux查看进程打开的文件句柄以及如何修改教程

操作方法

首先我们开启系统,并且使用root账户登录,介绍大家如何查看本系统的文件句柄个数的大小。我们执行命令“ulimit -a”,其中oepn files 对应的即为本机文件句柄数。具体展示如下图所示。

下面我们可以根据进程ID进行统计各个进程打开了多少文件句柄数。统计用到了lsof工具,假如系统没有安装请自行安装。安装命令“yum install lsof”等待系统安装完毕。

待lsof软件安装完毕后,我们执行命令“lsof -n |awk '{print $2}'|sort|uniq -c |sort -nr|more ”,等待运算结果,结果出来后,其中第一列展示的为打开的文件句柄个数,第二列为对应的进程号。

然后我们可以根据一个打开文件句柄过多的进程ID来确认是那个进程,本篇中演示我们使用进程ID为1239,执行命令“ps -ef | grep 1239”,可以得到程序的主要信息。

当然我们也可以根据进程ID,来查看该应用打开的文件句柄。具体命令为"lsof -p 1239 | wc -l"。具体展示如下图所示。

下面我们介绍如何修改默认的文件句柄个数,首先介绍一个比较简单的方法。我们采用命令“ulimit -HSn 65535”表示设置硬性以及软性大小都为65535。(该方法当时生效,一旦重启失效,建议加入开机启动项内)。

设置完毕后,我们进行查看,执行命令"ulimit -a"进行验证,可以看到以及修改为65535了。具体展示如下图所示。

下面介绍第二种修改方法,我们修改/etc/security/limits.conf,在文件最后添加两行 * soft nofile 65535 * hard nofile 65535 修改后进行保存。具体展示如下图所示。

最后我们重启系统进行验证,输入命令“ulimit -a”。可以看到修改成功(此方法系统重启不影响)。

温馨提示

本篇简单介绍了linux下如何查看以及设置文件句柄数,对出现的"too many open files"非常有效
点击展开全文

更多推荐