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脚本编程大全