Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

81.2. 監控檔案系統

誰打開了該檔案? 顯示打開檔案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