lsof是一個(gè)用來(lái)顯示被打開(kāi)的文件的強(qiáng)大而有用的工具。在Unix系統(tǒng)中,任何事物都是文件(everything is a file),pipe是文件,IP sockets是文件,unix sockets是文件,目錄是文件,設(shè)備是文件,inodes是文件。
一些有用的例子:
當(dāng)在lsof后邊沒(méi)有跟任何參數(shù)時(shí),該命令將會(huì)列出當(dāng)前系統(tǒng)中被所有進(jìn)程打開(kāi)的所有文件
lsof|nl #nl命令打印出行號(hào)
下邊這幾個(gè)命令指出打開(kāi)某文件的進(jìn)程
lsof `which httpd` #那個(gè)進(jìn)程在使用apache的可執(zhí)行文件
lsof /etc/passwd #那個(gè)進(jìn)程在占用/etc/passwd
lsof /dev/hda6 #那個(gè)進(jìn)程在占用hda6
lsof /dev/cdrom #那個(gè)進(jìn)程在占用光驅(qū)
下邊將會(huì)打印出占用httpd可執(zhí)行文件的進(jìn)程的進(jìn)程號(hào)(僅僅是進(jìn)程號(hào),在編寫(xiě)shell腳本是有用)
lsof -t `which httpd`
顯示出那些文件被以k打頭的進(jìn)程名的進(jìn)程打開(kāi),以bash打頭,和以init打頭:
lsof -c k
lsof -c bash
lsof -c init
顯示出那些文件被以courier打頭的進(jìn)程打開(kāi),但是并不屬于用戶‘zahn’
lsof -c courier -u ^zahn
顯示被zahn和apache打開(kāi)的文件
lsof -u apache,zahn
顯示那些文件被pid為30297的進(jìn)程打開(kāi):
lsof +p 30297
顯示所有在/tmp文件夾中打開(kāi)的instance和文件的進(jìn)程。但是symbol文件并不在列
lsof -D /tmp
顯示所有打開(kāi)的端口
lsof -i
顯示所有打開(kāi)80端口的進(jìn)程
lsof -i:80
顯示所有打開(kāi)的端口和UNIX domain文件:
lsof -i -U
顯示那些進(jìn)程打開(kāi)了到www.akadia.com 的UDP的123(ntp)端口的鏈接:
lsof -iUDP@www.akadia.com:123
聯(lián)系客服