linux 系统统计进程打开文件数方法

linux 系统统计进程打开文件数方法,第1张

1 打开文件数各参数含义

参考  https://blog.csdn.net/xifeijian/article/details/9088137

查看某进程打开文件数

need-to-insert-img

2 统计文件所有进程文件数

lsof | awk '{print $2,$1}' | sort | uniq -c | sort -rn >>b.txt

need-to-insert-img

3 统计pid 进程打开的文件数

lsof -p pid

need-to-insert-img

4 统计pid 进程打开所有的文件数

lsof  |  awk "{print $NF}" | grep 10555  >product.txt

need-to-insert-img

5 分析pid 进程打开文件数连接  排序 和 统计

awk '{print $NF}' product.txt |sort |uniq -c |sort -nr >sort2.txt

need-to-insert-img

从接触unix开始就一直听到和遇到core dump,特别是刚学着使用C语言在AIX下编写程序的时候,core dump更是时不时就会不请自来。记得当时刚写应用的时候,提交程序时最怕的就是在运行过程时遇到core dump,对于银行核心系统,特别是使用静态应用进程,如果一个相对频繁一点的交易导致core dump,那么毫无疑问,除了赶紧定位错误改程序外,重启进程甚至无法争取到多少缓冲的时间来进行代码的更正和测试。而且往往导致core dump的,就是程序中一个小小的未注意到或者未测试到的一个疏忽。

虽然常常遇到core dump,不过很长时间内,都是出于知道这个名字,知道它导致的后果,知道一部分导致它出现的原因,其他的就都不甚了了了。说起来,就是自己太懒了,懒得看书......少壮不努力啊。看过一则统计,说60岁以上的老人,超过70%都后悔少壮不努力,不知统计的数据能否反映整个社会的情况。不过总的来说,这句古话还是有些道理的。大家不要学我。哈哈

core dump,翻译过来讲,就是核心转储。大致上就是指,如果由于应用错误,如浮点异常、指令异常等, *** 作系统将会转入内核的异常处理,向对应的进程发送特定的信号(SIGNAL),如果进程中没有对这些信号进行处理,就会转入默认的处理,core dump就是其中的一种。如果进程core dump,系统将会终止该进程,同时系统会产生core文件,以供调试使用。这个core文件其实就是内存的映像,即进程执行的时候内存的内容,也就是所谓的core dump。平常大家说某某进程core dump了,其实主要的意思就是说:某某进程因为错误而被系统自动终止了。

AIX上提供了dbx工具可以对core dump进行调试,协助定位引起core dump的代码。最普通的语法是:

dbx 应用名 core文件, 然后使用where命令来显示调试信息

一般来讲,根据工作中遇到的情况,dbx还是能够比较轻松的根据提示的内容来定位代码的。不过也有一些特殊情况时,dbx显示的调试信息过于模糊或者不直观,这个时候就只能根据经验来逐步定位了。有时定位起来会耗用相当长的时间。遇到这种情况时,使用日志文件,通过在代码中穿插多个写log的语句,也可以协助发现。因为进程core dump时,日志当然也中断了,根据日志在哪个代码行之后或之前中止了,可以有效缩小寻找的范围。甚至,在有些情况下,使用日志定位是唯一简便的方法了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7486668.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-06
下一篇 2023-04-06

发表评论

登录后才能评论

评论列表(0条)

保存