使用 lsof 查找打开的文件
2006-08-26 08:12:16 来源:WEB开发网清单 2. 带有 PID 筛选器并进行 txt 文件描述符筛选的 lsof 输出
sh-3.00# lsof -a -p 605 -d ^txt
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sendmail 605 root cwd VDIR 136,8 1024 23554 /var/spool/mqueue
sendmail 605 root 0r VCHR 13,2 6815752 /devices/pseudo/mm@0:null
sendmail 605 root 1w VCHR 13,2 6815752 /devices/pseudo/mm@0:null
sendmail 605 root 2w VCHR 13,2 6815752 /devices/pseudo/mm@0:null
sendmail 605 root 3r DOOR 0t0 58
/var/run/name_service_door(door to nscd[81]) (FA:->0x30002b156c0)
sendmail 605 root 4w VCHR 21,0 11010052
/devices/pseudo/log@0:conslog->LOG
sendmail 605 root 5u IPv4 0x300010ea640 0t0 TCP *:smtp (LISTEN)
sendmail 605 root 6u IPv6 0x3000431c180 0t0 TCP *:smtp (LISTEN)
sendmail 605 root 7u IPv4 0x300046d39c0 0t0 TCP *:submission (LISTEN)
sendmail 605 root 8wW VREG 281,3 32 8778600 /var/run/sendmail.pid
清单 2 为 lsof 指定了三个参数。第一个是 -a,它表示当所有的参数都为真时,才显示这个文件。第二个参数是 -p 605,它限制仅输出 PID 为 605 的进程,可以通过 ps 命令获取这个信息。最后一个参数 -d ^txt,它表示筛选出其中 txt 类型的记录(脱字符号 [^] 表示排除)。
清单 2 的输出提供了关于进程行为的信息。如 cwd 行所示,该应用程序的工作目录为 /var/spool/mqueue。文件描述符 0、1 和 2 分配给了 /dev/null(Solaris 大量使用符号链接,所以这里显示了相应的伪设备)。FD 3 是一个 Solaris 门(高速远程过程调用 (RPC) 接口),以只读模式打开。FD 4 中的内容比较有趣,因为它是一个字符设备的只读句柄,实质上是 /dev/log。从这个文件中,您可以收集该应用程序向 UNIX syslog 守护进程进行的记录,所以 /etc/syslog.conf 规定了日志文件的位置。
更多精彩
赞助商链接