linux sh根据进程名获取进程占用的文件描述符数量

  • Post author:
  • Post category:linux

获取进程id占用的所有文件描述符命令:

ls -l /proc/$process_id/fd

其中$process_id需要替换为自己要查询的实际进程id,但是ls出来的是一行一行的,不能统计描述符号数量,因此使用wc进行统计:

ls -l /proc/$process_id/fd | wc -l

在这里插入图片描述

但是进程pid会变,每次都通过ps去查的话很麻烦,这里可以直接通过输入进程名进行查询:
process_name=后面需要改为自己实际的进程名:

#/bin/bash
process_name=lx_backend
process_id=`pidof $process_name | awk '{print $1}'`
fd_num=`ls -l /proc/$process_id/fd | wc -l`
echo $fd_num

保存为getfd.sh,运行:

在这里插入图片描述
继续扩展,30s监听一次某个进程的文件描述符数量,并写入fdnum.log中:

#/bin/bash

while true
	do
		process_name=lx_backend
		data=`date +%Y-%m-%d:%H-%M-%S`
		#进程1
		process_id=`pidof $process_name | awk '{print $1}'`
		fd_num=`ls -l /proc/$process_id/fd | wc -l`
		echo $data:lx_backen1 $fd_num >> fdnum.log
		#进程2
		process_id=`pidof $process_name | awk '{print $2}'`
		fd_num2=`ls -l /proc/$process_id/fd | wc -l`
		echo $data:lx_backen2 $fd_num2 >> fdnum.log
		sleep 30
	done

版权声明:本文为qq_38441692原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。