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