概述:
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