概述:
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。如TC和UDP等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。
linux 命令行操作视图
1. lsof
查看进程打开文件、端口等信息, 需root权限运行, 一个很尴尬的事情是这么好用的工具,在很多Linux发行版上居然不是自带,不过该工具安装非诚简单,执行yum/apt-get -y install lsof 即可
# 查看使用该目录或文件的进程
lsof dir | file
如lsof /usr/sbin/sshd
lsof +d /usr/local/ 仅查看当前指定目录
lsof +D /usr/local/ 查看当前目录及其子目录
# 据进程id查看进程打开的文件,多个进程id用逗号隔开
lsof -p pid
如 lsof -p 2601,2602,2603
# 查看本机所有网络连接
lsof-i[tcp|udp]
# 查看占用tcp端口80的程序
lsof-itcp:80
# 查看占用端口10~1024范围内的进程
lsof -i tcp:10-1024
# 列出某个IP的连接信息
lsof -i @192.168.88.100
# 列出某个用户打开的文件信息
lsof -u root
# 列出某个用户的所有活跃的网络端口
lsof -a -u root -i
# 查看那些已被删除但仍未被释放的文件
lsof | grep deleted
# 每隔三秒查看一次访问本机端口22,80的网络连接情况
lsof -i @192.168.31.100:22,80 -r 3
# 查看本机所有程序打开文件数最多的前20个程序
lsof | awk '{print $2 " " $1}' | sort | uniq -c | sort -nr | head -20