linux命令查fd是谁创建

不及物动词 其他 66

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    要查找一个文件描述符(File Descriptor,简称fd)是由哪个进程创建的,在Linux系统中可以使用以下命令进行查询:

    1. 使用lsof命令:

    lsof命令可以列出所有打开的文件,包括普通文件、目录、命令管道、网络连接、设备等。可以使用以下命令查询某个文件描述符对应的进程:

    “`
    lsof -p <进程ID> | grep “<文件描述符>”
    “`

    其中,<进程ID>为要查询的进程的进程ID,<文件描述符>为要查询的文件描述符的编号。

    2. 使用/proc文件系统:

    在Linux系统中,每个进程都有一个对应的以进程ID为名称的目录,在该目录下可以找到该进程打开的所有文件描述符的符号链接。使用以下命令查询某个文件描述符对应的进程:

    “`
    ls -l /proc/<进程ID>/fd | grep “<文件描述符>”
    “`

    其中,<进程ID>为要查询的进程的进程ID,<文件描述符>为要查询的文件描述符的编号。

    通过以上两种方法,你可以查找到某个文件描述符是由哪个进程创建的。

    2年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    要查找Linux系统中的文件描述符(File Descriptor,简称FD)是由哪个进程创建的,我们可以使用以下方法:

    1. 使用lsof命令:lsof(list open files)命令可以列出当前系统中打开的文件和网络连接。我们可以通过以下命令查找指定文件描述符的创建进程:

    “`shell
    lsof -p | grep
    “`

    其中,``是进程的ID,``是要查找的文件描述符。上述命令将列出指定进程ID的打开文件列表,并使用grep过滤出特定的文件描述符。

    2. 查看/proc文件系统:Linux系统中的/proc目录下维护了一个与正在运行的进程有关的信息。每个进程都有一个以进程ID命名的文件夹,并且在该文件夹下有一个名为`fd`的子目录,其中包含了该进程打开的文件描述符的符号链接。我们可以使用以下命令查找特定文件描述符的创建进程:

    “`shell
    readlink /proc//fd/
    “`

    请替换``和``为相应的进程ID和文件描述符。上述命令将输出一个指向实际文件的符号链接。如果该文件不存在,可能是文件已经被删除,或者进程已经关闭。

    3. 使用fuser命令:fuser命令用于查找正在使用特定文件或文件系统的进程。我们可以使用以下命令来查找指定文件描述符的创建进程:

    “`shell
    fuser -u
    “`

    请将``替换为要查找的文件的路径。上述命令将输出正在使用该文件的进程的进程ID和用户名。

    4. 使用/proc文件系统的fdinfo文件:/proc目录中的fdinfo文件夹下存储了有关进程打开的文件描述符的详细信息。我们可以使用以下命令查找特定文件描述符的创建进程:

    “`shell
    cat /proc//fdinfo/
    “`

    请将``和``替换为相应的进程ID和文件描述符。上述命令将输出与该文件描述符相关的详细信息,包括创建进程的ID。

    5. 使用strace命令:strace命令用于跟踪进程的系统调用和信号。我们可以使用以下命令来查找文件描述符的创建进程:

    “`shell
    strace -e trace=open,openat -p “`

    请将``替换为相应的进程ID。上述命令将输出进程的系统调用信息,包括使用open和openat系统调用打开的文件描述符。

    以上方法提供了多种方式来查找在Linux系统中创建特定文件描述符的进程。根据不同的情况,可以选择合适的方法进行查找。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    在Linux系统中,可以通过以下几个方法查找某个文件描述符(file descriptor)由哪个进程创建:

    方法一:/proc/PID/fd目录
    1. 首先,使用 `lsof` 命令来查看具体的文件描述符信息。例如,要查找文件描述符为4的进程,可以执行以下命令:

    “`
    lsof -p PID | grep “4r”
    “`

    其中,`PID` 是进程的PID号。

    该命令将显示文件描述符为4的进程的相关信息,包括文件路径、进程ID、进程名等。

    2. 可以通过 /proc 文件系统来查找文件描述符对应的进程。进程的文件描述符信息通常被存储在 `/proc/PID/fd/` 目录下,其中 `PID` 是进程的PID号。在该目录下可以找到一个文件描述符的符号链接,该符号链接指向实际的文件。

    例如,要查找文件描述符为4的进程,可以执行以下命令:

    “`
    ls -l /proc/PID/fd/4
    “`

    其中,`PID` 是进程的PID号。

    该命令将显示文件描述符为4的符号链接的真实路径及文件信息。通过查看真实路径,可以确定该文件描述符是由哪个进程创建的。

    方法二:/proc/PID/maps文件
    1. 使用 `lsof` 命令查找文件描述符为4的进程,如方法一中所述:

    “`
    lsof -p PID | grep “4r”
    “`

    找到该进程的PID号。

    2. 执行以下命令,打开 `/proc/PID/maps` 文件:

    “`
    cat /proc/PID/maps
    “`

    该命令将显示进程的内存映射信息,包括起始地址、结束地址、访问权限等。

    3. 在 `/proc/PID/maps` 文件中查找具有起始地址和结束地址的范围,该范围可以与文件描述符对应。

    例如,要查找文件描述符为4的进程,可以通过搜索 `4r–` (其中 `4` 是文件描述符,表示读权限,`–` 表示没有写权限)来定位该进程在 `/proc/PID/maps` 文件中的区域。

    通过查看区域的起始地址和结束地址,可以确定该文件描述符是由哪个进程创建的。

    方法三:/proc/PID/cmdline文件
    1. 使用 `lsof` 命令查找文件描述符为4的进程,如方法一中所述:

    “`
    lsof -p PID | grep “4r”
    “`

    找到该进程的PID号。

    2. 执行以下命令,打开 `/proc/PID/cmdline` 文件:

    “`
    cat /proc/PID/cmdline
    “`

    该命令将显示进程的命令行参数。

    3. 可以通过查看命令行参数,确定该进程是如何创建文件描述符的。例如,如果命令行参数中包含了打开文件的路径,那么可以确定该进程创建了该文件描述符。

    综上所述,可以通过以上几种方法来查找文件描述符是由哪个进程创建的。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部