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