Linux Shell 基础知识:如何在没有 lsof 的情况下立即检查文件描述符状态(重定向到何处)?

Sop*_*rez 5 linux shell cygwin io-redirection

我正在学习Linux 的文件描述符,我想知道是否有任何命令显示了一个完整的列表,可以让我知道此时每个重定向到的位置。
也许一些信息,如:

0  -->  <stdin
1  -->  >stdout
2  -->  >stderr
3  -->  >MyFileForWriting
4  -->  <MyFileForReading
Run Code Online (Sandbox Code Playgroud)

我发现这个线程需要lsof,但是如果存在另一种不依赖于该命令的方法可能会很有用。
我需要有关 Linux 的这些信息(我也将在 CygWin 中尝试它,直到现在它不包括 'lsof' 工具,但其行为主要类似于符合 POSIX 的操作系统)。

mic*_*has 6

/proc文件系统将列出正是这样的信息:

$ ls -l /proc/self/fd
total 0
lrwx------ 1 michas users 1 Apr  6 04:44 0 -> /dev/pts/0
lrwx------ 1 michas users 1 Apr  6 04:44 1 -> /dev/pts/0
lrwx------ 1 michas users 1 Apr  6 04:44 2 -> /dev/pts/0
lr-x------ 1 michas users 1 Apr  6 04:44 3 -> /proc/6934/fd
$ ls -l /proc/self/fd 2>/dev/null <<<foo |cat
total 0
lr-x------ 1 michas users 1 Apr  6 04:45 0 -> /tmp/sh-thd-361068043 (deleted)
l-wx------ 1 michas users 1 Apr  6 04:45 1 -> pipe:[136729]
l-wx------ 1 michas users 1 Apr  6 04:45 2 -> /dev/null
lr-x------ 1 michas users 1 Apr  6 04:45 3 -> /proc/6952/fd
Run Code Online (Sandbox Code Playgroud)

如果您对某些其他进程感兴趣,只需将“self”替换为相应的 PID。