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