美文网首页
fd泄露查询

fd泄露查询

作者: 無名小子的杂货铺 | 来源:发表于2017-05-15 16:53 被阅读508次

    前几天遇到 fd 泄露问题,这里记录下 fd 查询方法

    fd 其实是系统中的文件目录,存在 /proc/[pid]/fd,包含进程打开文件的情况。

    打印 fd:

    root@android:/ # adb shell ls -l /proc/9580/fd                                
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 0 -> /dev/null
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 1 -> /dev/null
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 121 -> socket:[23760]
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 122 -> socket:[23329]
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 130 -> socket:[23936]
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 131 -> socket:[23389]
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 132 -> socket:[24398]
    lrwx------ u0_a96   u0_a96            2017-05-15 16:41 133 -> socket:[23937]
    ......
    

    pid 为 9580 的程序 fd 目录下中的每一项都是一个符号链接,指向打开的文件,数字则代表文件描述符

    计算个数:

    root@android:/ # adb shell ls -l /proc/9580/fd | wc -l                         
    175
    
    写了一个小脚本来打印pid的 fd个数
    #!/usr/bin/env python
    #!/bin/bash
    #!/bin/sh
    #coding:utf-8
    
    import os
    import sys
    
    if len(sys.argv) == 1:
    id = '0'
    else:
    id = str(sys.argv[1]);
    
    print("pid = " + id)
    
    command = "adb shell ls -l /proc/"+ id +"/fd | wc -l"
    print("fd = ")
    p = os.system(command)

    相关文章

      网友评论

          本文标题:fd泄露查询

          本文链接:https://www.haomeiwen.com/subject/jpfdottx.html