lsof
{Back to Index}
Table of Contents
1. 选项
- -a : 进行
与运算(默认是 或 逻辑) - -l : 显示用户 ID ,而不是用户名
- -t : 仅获取进程 ID
- -F : 格式化输出结果,如
-F pc(列出进程 ID,命令名) - -n : 避免域名解析
- -P : 避免端口解析
2. 用法示例
2.1. 列出所有使用这些文件的程序
lsof /path/to/file1 /path/to/file2
2.2. 查看指定路径下所有正在被使用的文件
lsof +D /path ## 递归 lsof +d /path ## 非递归
2.3. 列出被某一进程所使用的文件
lsof -p <pid>
2.4. 查看 socket 信息
lsof -i [46][protocol][@hostname|hostaddr][:service|port]
lsof -i lsof -i 4 lsof -i :80 lsof -i tcp lsof -i tcp:80 lsof -i @<ip> lsof -i @<ip>:<port>
2.5. 查看各种状态的 TCP 连接
lsof -iTCP -sTCP:LISTEN
常见状态有:
- CLOSED
- IDLE
- BOUND
- LISTEN
- ESTABLISHED
- SYN_SENT
- SYN_RCDV
- ESTABLISHED
- CLOSE_WAIT
- FIN_WAIT1
- CLOSING
- LAST_ACK
- FIN_WAIT_2
- TIME_WAIT
2.6. 查看指定文件描述符的文件
lsof -d <fd>
2.7. 结束所有监听在本地接口的进程
kill -9 `lsof -i@127.0.0.1 -t`
2.8. 循环监控
lsof -r <second>
lsof -i:80 -r 1m"=== %T ==="
2.9. 监控指定用户打开的文件
lsof -u root lsof -u ^root ## 非
2.10. 查看内存映射文件
lsof -d mem
2.11. 恢复误删的文件
第一步:找到使用误删文件的进程及文件描述符
$ lsof | grep 'karaf.log' java 1283 root 2w REG 3,3 5381017 1773647 /var/log/karaf.log (deleted)第二步:重定向
cat /proc/1283/fd/2 > /var/log/karaf.log