谁打开了该文件? 显示打开文件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
原文出处:Netkiller 系列 手札
本文作者:陈景峯
转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。