lsof(list open files)是一個(gè)列出當(dāng)前系統(tǒng)打開(kāi)文件的工具。在linux環(huán)境下,任何事物都以文件的形式存在,通過(guò)文件不僅僅可以訪(fǎng)問(wèn)常規(guī)數(shù)據(jù),還可以訪(fǎng)問(wèn)網(wǎng)絡(luò)連接和硬件。
(推薦教程:linux教程)
所以,lsof的功能很強(qiáng)大。一般root用戶(hù)才能執(zhí)行l(wèi)sof命令,普通用戶(hù)可以看見(jiàn)/usr/sbin/lsof命令,但是普通用戶(hù)執(zhí)行會(huì)顯示“permission denied”。因此通過(guò)lsof工具能夠查看這個(gè)列表對(duì)系統(tǒng)監(jiān)測(cè)以及排錯(cuò)將是很有幫助的。
在終端下輸入lsof即可顯示系統(tǒng)打開(kāi)的文件,因?yàn)?lsof 需要訪(fǎng)問(wèn)核心內(nèi)存和各種文件,所以必須以 root 用戶(hù)的身份運(yùn)行它才能夠充分地發(fā)揮其功能。
每行顯示一個(gè)打開(kāi)的文件,若不指定條件默認(rèn)將顯示所有進(jìn)程打開(kāi)的所有文件。lsof輸出各列信息的意義如下:
COMMAND:進(jìn)程的名稱(chēng)
PID:進(jìn)程標(biāo)識(shí)符
USER:進(jìn)程所有者
FD:文件描述符,應(yīng)用程序通過(guò)文件描述符識(shí)別該文件。如cwd、txt等
TYPE:文件類(lèi)型,如DIR、REG等
DEVICE:指定磁盤(pán)的名稱(chēng)
SIZE:文件的大小
NODE:索引節(jié)點(diǎn)(文件在磁盤(pán)上的標(biāo)識(shí))
NAME:打開(kāi)文件的確切名稱(chēng)
lsof指令的用法如下:
lsof abc.txt 顯示開(kāi)啟文件abc.txt的進(jìn)程 lsof 目錄名 查找誰(shuí)在使用文件目錄系統(tǒng)
lsof -i :22 知道22端口被哪個(gè)進(jìn)程占用
lsof -c abc 顯示abc進(jìn)程現(xiàn)在打開(kāi)的文件
lsof -g gid 顯示歸屬gid的進(jìn)程情況
lsof -n 不將IP轉(zhuǎn)換為hostname,缺省是不加上-n參數(shù)
lsof -p 12 看進(jìn)程號(hào)為12的進(jìn)程打開(kāi)了哪些文件
lsof -u username 查看用戶(hù)打開(kāi)哪些文件
lsof -i @192.168.1.111 查看遠(yuǎn)程已打開(kāi)的網(wǎng)絡(luò)連接(連接到192.168.1.111)