Unix/Linux 下的小工具:lsof

lsof 本来是一个很普通的小工具,用来显示被进程打开的文件信息,因为在 Unix/Linux 下任何东西都是文件,所以 lsof 这个 “小” 工具就显得非常强大,常被称作 “Unix debugging 的瑞士军刀”。lsof 很好的遵循了 Unix 的哲学 “只做一件事,并把事情做好”。来看看 Unix/Linux 下被看作文件的有哪些:普通文件,目录,NFS 文件,特殊块文件,字符文件,管道,连接,各种 socket,共享文件库等,所有都是文件,所以 lsof 用途非常广泛。

列出所有进程打开的所有文件:

# lsof

列出某个程序打开的所有文件:

# lsof -c vim
# lsof -c vim -c python

列出某个用户打开的所有文件:

# lsof -u vpsee
# lsof -u vpsee, root

列出某个组(group id)打开的所有文件:

# lsof -g 1

列出某个进程(PID)打开的所有文件:

# lsof -p 1
# lsof -p 1,2,3

列出某个目录下被打开的所有文件:

# lsof +D /usr/lib

列出所有网络连接:

# lsof -i

列出所有 TCP 连接或 UDP 连接:

# lsof -i tcp
# lsof -i udp

列出谁在使用某个网络端口:

# lsof -i :22
# lsof -i :ssh

列出某个用户所有的网络连接:

# lsof -a -u vpsee -i

列出所有 NFS 文件、Unix domain socket 文件:

# lsof -N
# lsof -U

评论 (1 Comment)

  1. 非常实用

发表评论