標籤:
lsof即list open files的縮寫,在Linux和其他Unix上都由,Mac XOS上也是
查看開啟檔案/目錄及對應進程
COMMAND 進程命令列字串PID 進程IDUSER 使用者FD txt(進程的程式檔案), cwd(進程所在的當前目前), mem(), FDIDuwr 進程內該檔案的開啟表示符id, 其後的字母表示操作模式TYPE REG(一般檔案), DIR(目錄), CHR(字元裝置檔案),FIFO(管道),IPv4(IPv4網路通訊端)DEVICESIZE/OFFNODENAME 檔案路徑
範例輸出:
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAMEinit 1 root cwd DIR 8,1 4096 2 /init 1 root rtd DIR 8,1 4096 2 /init 1 root txt REG 8,1 265848 2621507 /sbin/initinit 1 root mem REG 8,1 47712 3149879 /lib/x86_64-linux-gnu/libnss_files-2.19.so
查看某個檔案/目錄的使用進程,直接在命令後跟檔案/目錄名即可:
# lsof server_timeCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEserver_ti 20999 hgf txt REG 8,1 9190 1442691 ./server_time
# lsof /home/hgf/netCOMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAMEbash 10075 hgf cwd DIR 8,1 4096 1442896 /home/hgf/netbash 15706 hgf cwd DIR 8,1 4096 1442896 /home/hgf/netbash 18324 hgf cwd DIR 8,1 4096 1442896 /home/hgf/netbash 18573 hgf cwd DIR 8,1 4096 1442896 /home/hgf/netsudo 20730 root cwd DIR 8,1 4096 1442896 /home/hgf/netsu 20740 root cwd DIR 8,1 4096 1442896 /home/hgf/netbash 20741 root cwd DIR 8,1 4096 1442896 /home/hgf/netserver_ti 20999 hgf cwd DIR 8,1 4096 1442896 /home/hgf/netlsof 21814 root cwd DIR 8,1 4096 1442896 /home/hgf/netlsof 21815 root cwd DIR 8,1 4096 1442896 /home/hgf/net
查看已刪除檔案
這裡的已刪除檔案指的是檔案被某些進程開啟,但磁碟上該檔案已經被刪除了(目錄列出的結果上來看)。這些檔案實際還是存在於磁碟上,可以通過使用lsof來找出這些檔案
# lsof|grep deletedinit 1 root 10w REG 8,1 969 2360289 /var/log/upstart/systemd-logind.log.1 (deleted)init 1 root 27w REG 8,1 1406 2360292 /var/log/upstart/modemmanager.log.1 (deleted)
...
......server_ti 20999 hgf txt REG 8,1 9190 1442691 /home/hgf/net/server_time (deleted)
此時我們可以從/proc檔案系統中在對應的PID目錄下複製出程式的檔案,
[email protected]:/proc/20999# lltotal 0dr-xr-xr-x 9 hgf hgf 0 May 7 10:56 ./dr-xr-xr-x 262 root root 0 Feb 5 00:26 ../dr-xr-xr-x 2 hgf hgf 0 May 7 11:09 attr/-rw-r--r-- 1 hgf hgf 0 May 7 11:09 autogroup-r-------- 1 hgf hgf 0 May 7 11:09 auxv-r--r--r-- 1 hgf hgf 0 May 7 11:09 cgroup--w------- 1 hgf hgf 0 May 7 11:09 clear_refs-r--r--r-- 1 hgf hgf 0 May 7 11:09 cmdline-rw-r--r-- 1 hgf hgf 0 May 7 11:09 comm-rw-r--r-- 1 hgf hgf 0 May 7 11:09 coredump_filter-r--r--r-- 1 hgf hgf 0 May 7 11:09 cpusetlrwxrwxrwx 1 hgf hgf 0 May 7 10:56 cwd -> /home/hgf/net/-r-------- 1 hgf hgf 0 May 7 11:09 environlrwxrwxrwx 1 hgf hgf 0 May 7 10:56 exe -> /home/hgf/net/server_time (deleted)dr-x------ 2 hgf hgf 0 May 7 10:56 fd/...[email protected]:/proc/20999# cp exe ~/
如果是程式開啟的一個檔案而不是程式本身,則可以在fd目錄中找到對應的描述符編號
Linux : lsof 命令