第一次接触到 lsof 命令, 是因为偶然间发现 netstat 命令已经落伍了(与此同时, 还发现了 ss 命令, 详见另一篇文章: netstat/ss 使用对比 );
使用之后, 发现 lsof 被人称为 神器
, 还是有一定道理的; 在任何资源都被抽象为 文件
的 linux 中, 一个面向 文件
的管理工具, 自然辖域辽阔, 神通广大, 再加上与其他命令的巧妙组合, 更如虎添翼, 在工作实践中独当一面;
本文参考了一些实用资料, 结合自己的经验, 对 lsof 命令的使用略作整理;
lsof 命令的输出结构
1 2 3 4 5 6 7 8 9 10 11 12 13
|
> sudo lsof | head -n 2 COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME systemd 1 root cwd DIR 253,1 4096 128 /
|
各字段的不同输出含义
FD: 文件描述符 file description
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| 0: 标准输入流 1: 标准输出流 2: 标准错误流
cwd: current work directory, 应用程序启动的目录 txt: 二进制可执行文件或共享库 rtd: root directory, 根目录 mem: memory mapped file, 内存映射文件 mmap: memory-mapped device, 内存映射设备
u: 可读可写模式 r: 只读模式 w: 只写模式
|
TYPE: 文件类型
1 2 3 4 5 6
| DIR: 目录文件 REG: 普通文件 CHR: char, 字符设备文件 BLK: block, 块设备文件 IPV4: ipv4 socket 套接字文件 IPV6: ipv6 socket 套接字文件
|
DEVICE:
SIZE: 文件大小
lsof 的日常应用
lsof 网络 相关的应用
1 2 3 4 5 6 7 8 9 10
| sudo lsof -i
sudo lsof -i 6
sudo lsof -i TCP
sudo lsof -i:port
sudo lsof [email protected]:9999
|
lsof 用户 相关的应用
1 2 3
| sudo lsof -u zshell.zhang sudo lsof -u ^zshell.zhang (排除此用户)
|
lsof 命令/进程 相关的应用
1 2 3 4 5 6
| sudo lsof -t
sudo lsof -c nginx
sudo lsof -p pid
|
lsof 文件/目录 相关的应用
1 2 3 4 5
| sudo lsof /target_path
sudo lsof +d /target_path sudo lsof +D /target_path
|
lsof 的选项组合及实践技巧
上述的 lsof 操作, 对于多种选项的组合, 其默认是 或(or) 的关系, 即满足其中之一便会打印出来;
lsof 与(and) 的逻辑运算关系如下:
lsof 常用的组合及实践:
1 2 3 4 5 6 7 8 9 10
| sudo lsof | grep deleted
sudo kill `sudo lsof -t -c java` sudo kill `sudo lsof -t -u zshell.zhang`
1. sudo lsof /target_deleted_file
2. cat /proc/{pid}/fd/{fd_num} > /target_deleted_file
|
另外, lsof 还可以被运用于找出系统中的幽灵文件, 详见: du / df 使用及其区别;
站内相关文章
参考链接