Unix/Linux 下的小工具:lsof
2010年01月15日 | 标签: linux | 作者:vpsee
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
非常实用