概述:
lsof(list open files)是一個(gè)列出當(dāng)前系統(tǒng)打開文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過(guò)文件不僅僅可以訪問(wèn)常規(guī)數(shù)據(jù),還可以訪問(wèn)網(wǎng)絡(luò)連接和硬件。如TC和UDP等,系統(tǒng)在后臺(tái)都為該應(yīng)用程序分配了一個(gè)文件描述符,無(wú)論這個(gè)文件的本質(zhì)如何,該文件描述符為應(yīng)用程序與基礎(chǔ)操作系統(tǒng)之間的交互提供了通用接口。
linux 命令行操作視圖
1. lsof
查看進(jìn)程打開文件、端口等信息, 需root權(quán)限運(yùn)行, 一個(gè)很尷尬的事情是這么好用的工具,在很多Linux發(fā)行版上居然不是自帶,不過(guò)該工具安裝非誠(chéng)簡(jiǎn)單,執(zhí)行yum/apt-get -y install lsof 即可
# 查看使用該目錄或文件的進(jìn)程
lsof dir | file
如lsof /usr/sbin/sshd
lsof +d /usr/local/ 僅查看當(dāng)前指定目錄
lsof +D /usr/local/ 查看當(dāng)前目錄及其子目錄
# 據(jù)進(jìn)程id查看進(jìn)程打開的文件,多個(gè)進(jìn)程id用逗號(hào)隔開
lsof -p pid
如 lsof -p 2601,2602,2603
# 查看本機(jī)所有網(wǎng)絡(luò)連接
lsof-i[tcp|udp]
# 查看占用tcp端口80的程序
lsof-itcp:80
# 查看占用端口10~1024范圍內(nèi)的進(jìn)程
lsof -i tcp:10-1024
# 列出某個(gè)IP的連接信息
lsof -i @192.168.88.100
# 列出某個(gè)用戶打開的文件信息
lsof -u root
# 列出某個(gè)用戶的所有活躍的網(wǎng)絡(luò)端口
lsof -a -u root -i
# 查看那些已被刪除但仍未被釋放的文件
lsof | grep deleted
# 每隔三秒查看一次訪問(wèn)本機(jī)端口22,80的網(wǎng)絡(luò)連接情況
lsof -i @192.168.31.100:22,80 -r 3
# 查看本機(jī)所有程序打開文件數(shù)最多的前20個(gè)程序
lsof | awk '{print $2 " " $1}' | sort | uniq -c | sort -nr | head -20






