列出打开的文件描述符

列出打开的文件描述符

Content #

有大量的命令行选项和参数可用于过滤lsof的输出。最常用的选项包括-p和-d,前者允许指定进程ID(PID),后者允许指定要显示的文件描述符编号(多个编号之间以逗号分隔)。

在打开了多个替代性文件描述符的脚本中,看一下使用lsof命令的结果:

$ cat test18
#!/bin/bash
# testing lsof with file descriptors

exec 3> test18file1
exec 6> test18file2
exec 7< testfile

/usr/sbin/lsof -a -p $$ -d0,1,2,3,6,7
$ ./test18
COMMAND  PID USER   FD   TYPE DEVICE SIZE   NODE NAME
test18  3594 rich    0u   CHR  136,0           2 /dev/pts/0
test18  3594 rich    1u   CHR  136,0           2 /dev/pts/0
test18  3594 rich    2u   CHR  136,0           2 /dev/pts/0
18  3594 rich    3w   REG  253,0    0 360712 /home/rich/test18file1
18  3594 rich    6w   REG  253,0    0 360715 /home/rich/test18file2
18  3594 rich    7r   REG  253,0   73 360717 /home/rich/testfile
$

这个脚本创建了3个替代性文件描述符,两个用作输出(3和6),一个用作输入(7)。在脚本运行lsof命令时,你会在输出中看到新的文件描述符。我们去掉了输出中的第一部分,这样就能看到最终的文件名了。文件名显示了文件描述符所使用文件的完整路径。每个文件都显示为REG类型,说明这些是文件系统中的常规文件。

From #

Linux命令行与shell脚本编程大全