Linux查看每个进程的Openfiles数量

简介:

在Linux里,在/etc/security/limits.conf里有一个参数是nofile,作用是控制某用户的文件打开数量。可以使用ulimit -n的命令查看具体的限制,一但当前文件打开数达到nofile上限就无法再打开文件,从而使某些应用运行异常,如用户无法通过SSH登录系统。

通过我们可以使用lsof命令查看文件打开的具体情况,如用户、进程的信息。使用

lsof -p PID

可以查看某一个进程的文件打开数量

lsof -u UID

可以查看某一个用户的文件打开数量

但是发现好像没有一个参数可以知道所有进程的文件打开数量

所以我就写了个小脚本来统计一下所有进程的文件打开数量,从而可以得知到底是哪个进程出现问题,再作进一步的处理,脚本的具体内容如下


#!/bin/bash

# psof.sh
# Author: 
#    #  #######  #     #  #######  
#   #   #        ##    #     #     
#  #    #        # #   #     #     
###     #####    #  #  #     #     
#  #    #        #   # #     #     
#   #   #        #    ##     #     
#    #  #######  #     #     #     
# DATE: 2016-10-09
# DESCRIPTION: 计算每个进程的Openfiles

tmpfile=/dev/shm/psof.txt
echo "" > $tmpfile
for pid in $(ps -eo pid | grep -v PID)
        do echo $pid":"$(lsof -p $pid|wc -l) >> $tmpfile ; 
done
echo "PID : Openfiles"
sort -nrk 2 -t: $tmpfile

同样,可以稍作修改用于统计所有用户的文件打开数量

抛砖引玉,以供参考

目录
相关文章
|
3天前
|
消息中间件 算法 Linux
【Linux】详解如何利用共享内存实现进程间通信
【Linux】详解如何利用共享内存实现进程间通信
|
3天前
|
Linux
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
【Linux】命名管道的创建方法&&基于命名管道的两个进程通信的实现
|
3天前
|
Linux
【Linux】匿名管道实现简单进程池
【Linux】匿名管道实现简单进程池
|
3天前
|
Linux
【Linux】进程通信之匿名管道通信
【Linux】进程通信之匿名管道通信
|
3天前
|
存储 Linux Shell
Linux:进程等待 & 进程替换
Linux:进程等待 & 进程替换
29 9
|
3天前
|
存储 Linux C语言
Linux:进程创建 & 进程终止
Linux:进程创建 & 进程终止
24 6
|
1天前
|
Linux 数据库
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
linux守护进程介绍 | Linux的热拔插UDEV机制
|
1天前
|
Unix Linux 调度
linux线程与进程的区别及线程的优势
linux线程与进程的区别及线程的优势
|
1天前
|
Linux 调度 C语言