lsof (List Open Files) 是一个用于列出当前系统中打开文件的命令,适用于 Unix 和类 Unix 操作系统。它不仅可以列出常规文件,还可以列出打开的网络文件、设备等。lsof [选项] [文件]
lsof
lsof -u username
lsof -p PID
lsof /path/to/file
lsof -i :port
lsof -i
lsof +D /path/to/dir
lsof -i tcp
lsof -i udp
lsof -i -sTCP:LISTEN
查找用户 root 打开的所有文件
lsof -u root
查找进程 ID 为 1234 的进程打开的文件
lsof -p 1234
查找 TCP 端口 80 上打开的文件
lsof -i :80
查找并列出 /var/log/syslog 文件被哪些进程打开
lsof /var/log/syslog
查找目录 /home/user 下的所有打开文件
lsof +D /home/user
查找所有 TCP 连接
lsof -i tcp
查找所有 UDP 连接
lsof -i udp
列出所有正在监听的 TCP 套接字
lsof -iTCP -sTCP:LISTEN
lsof -iTCP -sTCP:LISTEN # 列出所有正在监听的 TCP 端口以及相关的进程。
netstat -tuln # 列出所有监听的 TCP 和 UDP 套接字。
信息范围:
lsof 可以显示进程与网络连接的对应关系。netstat 主要显示网络连接和端口状态。输出内容:
lsof 提供进程ID、用户、文件描述符等详细信息。netstat 提供协议、端口、连接状态等网络层信息。使用场景:
lsof 时,可以了解哪个进程在使用特定的网络端口。netstat 时,可以快速查看网络连接的整体状态。lsof -iTCP -sTCP:LISTEN #列出所有正在监听的 TCP 端口以及相关的进程。
netstat -tuln # 列出所有监听的 TCP 和 UDP 套接字
lsof -i :80
netstat -anp | grep :80
总结:lsof 提供进程级别的详细信息,而 netstat 更适合查看网络连接和接口的状态,两者可以结合使用以获得更全面的信息。