lsof:list open file 列出已被打开的文件

选项:

+文件/目录  列出当前文件或目录是否进程在使用,常用

-u 指定用户,查询所属用户的进程打开的文件

-g 指定用户组

-d FD 显示指定文件描述符的进程

lsof -i 用以显示符合条件的进程情况

    lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 常用

实例:

列出当前系统所有进程打开的所有文件

[root@Management-Machine-140 ~]# lsof #就可以列出当前系统所有进程已打开的文件
如:vim install.log 文件
[root@Management-Machine-140 ~]# lsof |  grep install.log
vim       6474    root    4u      REG                8,6    16384        109 /root/.install.log.swp
第一列:进程名称
第二列:pid
第三列:所属用户
第四列:FD文件描述符,应用程序通过文件描述符识别该文件
第五列:文件类型
第六列:磁盘名称
第七列:文件大小
第八列:索引节点(在磁盘上的索引节点)
第九列:文件名称

恢复已删除的文件

[root@Management-Machine-140 ~]# cp install.log install.log1
[root@Management-Machine-140 ~]# vim install.log1     #shell中打开文件
[root@Management-Machine-140 ~]# rm -f install.log1   #重新打开文件
[root@Management-Machine-140 ~]# lsof | grep install.log1                
vim       6487    root    4u      REG                8,6    16384        129 /root/.install.log1.swp
[root@Management-Machine-140 ~]# cat /proc/6487/fd/4 >>/root/install.log1   #即可恢复

查看某个端口是否正在运行

[root@Management-Machine-140 ~]# lsof -i :22
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1135 root    3u  IPv4  11545      0t0  TCP *:ssh (LISTEN)
[root@WebA-136 ~]# lsof -i :111
COMMAND PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
rpcbind 938  rpc    6u  IPv4  10422      0t0  UDP *:sunrpc

查看某个文件系统是否正在使用(有使用无法卸载)

[root@Management-Machine-140 ~]# lsof /tmp
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
bash    6545 root  cwd    DIR    8,6     4096   14 /tmp    #提示bash正在开启,且所在目录是tmp