获取进程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 版权协议,转载请附上原文出处链接和本声明。