知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
誰打開了該檔案? 顯示打開檔案filename的進程
lsof filename
列出某個目錄下被打開的檔案
# lsof /tmp/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME seahorse- 4158 neo cwd DIR 8,2 53248 1310721 /tmp
遞歸子目錄列出檔案狀態
$ sudo lsof +D /srv/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME match 5227 root txt REG 252,0 1351616 1966083 /srv/match [root@netkiller ~]# lsof +D /proc/1/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root 9r REG 0,3 0 8401 /proc/1/mountinfo
>1 查看某個檔案被哪個進程/命令正在使用 在一個窗口執行 [root@netkiller ~]# less /etc/passwd 在另外一個窗口執行 [root@netkiller ~]# lsof /etc/passwd COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME less 14493 root 4r REG 8,2 2676 4466070 /etc/passwd 遞歸查看某個目錄中檔案被哪些命令/程序使用 使用了+D,對應目錄下的所有子目錄和檔案都會被列出 開兩個窗口分別執行如下命令 [root@netkiller ~]# less test/logs/access/2013-05-22.access [root@netkiller ~]# less test/11 再第三個窗口執行 [root@netkiller ~]# lsof +D test/ COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME less 14840 root 4r REG 8,2 252 6166856 test/11 less 14877 root 4r REG 8,2 0 6166852 test/logs/access/2013-05-22.access