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

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

抛砖引玉,以供参考

时间: 2024-08-01 16:38:51

Linux查看每个进程的Openfiles数量的相关文章

linux 查看某进程或程序的网卡流量(转)

一.nethogs介绍 分享一个linux 下检测系统进程占用带宽情况的检查.来自github上的开源工具. 它不依赖内核中的模块.当我们的服务器网络异常时,可以通过运行nethogs程序来检测是那个程序占用了大量带宽.节省了查找时间. 二.安装方法 1.在epel 源中可以直接yum 安装 yum install libpcap nethogs -y 2.源码方式安装 2.1 安装c++ 环境 [root@SaltMaster ~]# yum install gcc-c++ libpcap-d

CentOS下查看某个进程的线程数量的方法

  有些时候需要确实进程内部当前运行着多少线程,那么以下几个方法值得一用. 1.根据进程号进行查询: # pstree -p 进程号 # top -Hp 进程号 2.根据进程名字进行查询: # pstree -p `ps -e | grep server | awk '{print $1}'` # pstree -p `ps -e | grep server | awk '{print $1}'` | wc -l 这里利用了管道和命令替换, 关于命令替换,我也是今天才了解,就是说用``括起来的命

Linux 查看目录大小及文件数量方法

查看当前目录大小:  代码如下 复制代码 [root@512m50G /]# du -sh 查看指定目录大小:  代码如下 复制代码 [root@512m50G /]#du -sh /var/www.111cn.net/blog 查看当前目录文件总数:  代码如下 复制代码 [root@512m50G /]#find . -type f |wc -l 查看指定目录文件总数:  代码如下 复制代码 [root@512m50G /]#find /var/www.111cn.net/blog -typ

Linux查看进程命令和具体操作

ps ax 命令显示一个当前系统进程的列表,该列表中包括其他用户拥有的进程.要显示进程以及它们的所有者,使用 ps aux 命令.该列表是一个静态列表:换一句话说,它是在你启用这项命令时正在运行的进程的快照.如果你需要Linux查看进程一个时刻更新的运行进程列表,使用下面描述的 top 命令. Linux查看进程ps 的输出会很长.要防止它快速从屏幕中滑过,你可以把它管道输出给 less 命令: ps aux | less 你可以使用 Linux查看进程ps 命令和 grep 命令的组合来查看某

AIX/LINUX系统中如何查看单个进程在os层面的内存消耗

--如何查看单个进程在os层面的内存消耗 AIX: $ svmon -Pt10 | perl -e 'while(<>){print if($.==2||$&&&!$s++);$.=0 if(/^-+$/)}' ---- -用这个可以看最大的占用内存的10个进程 ------------------------------------------------------------------------------- Pid Command Inuse Pin Pgs

在Linux下如何查看一个进程的运行时间

我是一个 Linux 系统的新手.我该如何在我的 Ubuntu 服务器上查看一个进程(或者根据进程 id 查看)已经运行了多久? 你需要使用 ps 命令来查看关于一组正在运行的进程的信息.ps 命令提供了如下的两种格式化选项. etime 显示了自从该进程启动以来,经历过的时间,格式为 [[DD-]hh:]mm:ss. etimes 显示了自该进程启动以来,经历过的时间,以秒的形式. 如何查看一个进程已经运行的时间? 你需要在 ps 命令之后添加 -o etimes 或者 -o etime 参数

Linux有问必答:Linux上如何查看某个进程的线程

原创:LCTT https://linux.cn/article-5633-1.html 译者: GOLinux本文地址:https://linux.cn/article-5633-1.html2015-6-15 15:44 收藏: 9 问题: 我的程序在其内部创建并执行了多个线程,我怎样才能在该程序创建线程后监控其中单个线程?我想要看到带有它们名称的单个线程详细情况(如,CPU/内存使用率). 线程是现代操作系统上进行并行执行的一个流行的编程方面的抽象概念.当一个程序内有多个线程被叉分出用以执

linux ps命令,查看某进程cpu和内存占用率情况, linux ps命令,查看进程cpu和内存占用率排序。 不指定

背景:有时需要单看某个进程的CPU及占用情况,有时需要看整体进程的一个占用情况.一. linux ps命令,查看某进程cpu和内存占用率情况[root@test vhost]# ps auxUSER       PID  %CPU    %MEM    VSZ   RSS TTY      STAT    START   TIME COMMAND解释:linux 下的ps命令USER 进程运行用户PID    进程编号%CPU 进程的cpu占用率%MEM 进程的内存占用率VSZ 进程所使用的虚存

linux服务器-Liunx下使用SSH查看was进程

问题描述 Liunx下使用SSH查看was进程 初次接触Linux,要监控was服务器的状态,用什么命令能查看was是不是挂了 而不用通过是否能登陆控制台来检测was是否还活着.