linux打开文件数量的查看方法



linux打开文件数量的查看方法

在网上查到两种查看linux打开文件数量的查看方法,但结果不相同,linux查看文件打开数量是以那个文件或命令为标准呢?

搜索过关于ulimit命令的一些用法,其中有
ulimit -n 4096
也就是限制用户的最大文件打开数为4096个

在网上查了关于怎么查看文件打开数的文章大致有两种说法

/proc/sys/fs/file-nr 
该文件与 file-max 相关,它有三个值: 

已分配文件句柄的数目 
已使用文件句柄的数目 
文件句柄的最大数目 
该文件是只读的,仅用于显示信息。 

查看所有进程的文件打开数
lsof |wc -l

查看某个进程打开的文件数
lsof -p pid |wc -l




 有许多情况下,我们需要查看一个进程当前打开了哪些文件,反过来我们也希望知道某一个文件正在被哪些进程所读写。在Linux下有许多有用的工具可以帮我们完成这两个工作,下面介绍这两个工具:lsof与fuser。

    fuser find files or sockets' user

    格式:fuser [选项] fname

    -k 如果找到打开文件的进程,则发送SIGKILL杀死此进程,通过-i选项,可以为用户提供交互选择

    -signal 用户可以指定使用何种信号去kill进程,如果-k参数指定,则忽略此参数

    -m 如果指定一个文件,则所有访问那个文件所在文件系统的进程都会被列出来

    -n  type 指定不同的文件类型,默认类型为file,此外还支持tcp和udp类型,此时可以简写作port/tcp

    -u  显示进程属主

    -v  显示详细进程与打开文件信息

    -4/-6 只搜索IPv4/IPv6套接字

    例如,我们想查看端口TCP端口9000由哪个进程打开 fuser -v -u 9000/tcp

             查看哪些进程在访问/home挂载分区              fuser -mv /home

    lsof list open file

    格式:lsof  [选项] [names]

    单独执行lsof将输出系统中所有打开的文件,我们可以grep过滤出我们关心的内容,不过lsof提供了相应的参数帮助我们精确查找

    lsof name 将输出所有使用文件name的进程

    -p pid 列出进程pid所打开的所有文件

    -d FD_pattern 列出所有已经打开的FD值为FD_pattern的文件FD的值有整数,TXT,MEM等等

    -a lsof后可以加多个匹配条件,默认为or连接,此参数将多个条件变成and关系

    -i [46] [proto] [@hostname|ip][:service|port] 用来选择占用某个端口的进程

    +d/+D dir 非递归或递归的显示打开dir下文件的进程

    -c string   显示进程的command中包含string的进程所打开的文件

    -u username 显示属于user的进程所打开的文件

    -g gid

     以上这些参数已经足够用了,上面这两个工具都是读取/proc文件系统中的数据进行工作的。网上有提到借助于lsof的查找功能,可以对一个删除的文件进行恢复,前提是占用这个文件的进程当前还没有关闭。通过被删除的文件,找到对应的进程及在进程中的fd-num,然后通过cat /proc/process-num/fd/fd-num即可恢复被删除的文件。


Linux系统中,查看当前打开的文件数通常可以通过多种方法来实现。以下是几种常用的方法: 1. 使用`lsof`命令 `lsof`(List Open Files)是一个列出当前系统打开文件的工具。通过它可以查看哪些文件被进程打开,也可以用来查看打开的文件数。使用`lsof`命令时,可以配合`-p`参数指定进程号,或者使用`-i`来查看打开的网络连接,或者直接执行`lsof`来查看所有打开的文件。 示例命令: ``` lsof | wc -l ``` 这条命令会输出所有打开的文件数量。 2. 使用`/proc`文件系统 Linux的`/proc`文件系统包含了系统运行时的各种信息,其中`/proc/sys/fs/file-nr`文件包含了打开的文件数的相关信息。通过查看这个文件,可以获得系统当前打开的文件总数。 示例命令: ``` cat /proc/sys/fs/file-nr ``` 这条命令会输出三个数字,第一个数字就是当前打开文件的总数。 3. 使用`ulimit`命令 `ulimit`命令可以显示或设置用户进程的资源限制,包括文件大小、进程数据块大小等。使用`ulimit -n`可以查看用户级别的文件打开数限制。 示例命令: ``` ulimit -n ``` 这条命令会显示当前用户的文件打开数限制。 需要注意的是,上述方法查看的文件数是不同的概念。例如,`lsof`可能包括了各种类型文件的打开情况,而`/proc/sys/fs/file-nr`显示的是系统级别打开文件的总数,包括了进程无法使用的文件句柄。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值