Linux 命令之 - lsof
命令简介
lsof
是一个列出当前系统打开文件的工具。它可以列出每个进程打开的文件信息,包括普通文件、目录、网络文件系统的文件、字符或设备驱动器、共享库、管道和流以及网络文件等。
命令格式
1 | lsof [OPTIONS] [FILE]... |
其中:
- OPTIONS: 可选参数,用于控制lsof命令的行为。
- FILE: 要列出的文件或目录。如果省略,则列出所有打开的文件
参数说明
演示实例
基本示例
1.列出当前系统所有打开的文件:
1 | lsof |
2.列出当前系统所有打开的文件,包括隐藏文件:
1 | lsof -a |
3.显示文件详细信息:
1 | lsof -l |
4.以人类可读的方式显示文件大小:
1 | lsof -h |
5.按修改时间排序文件:
1 | lsof -t |
过滤文件
1.列出指定进程打开的文件
1 | lsof -c nginx |
2.列出指定进程 ID 打开的文件:
1 | lsof -p PID |
3.列出指定用户打开的文件:
1 | lsof -u USER |
4.列出指定文件类型的文件:
1 | lsof -t FILETYPE |
5.列出所有网络连接
1 | lsof -i |
6.列出指定端口连接信息
1 | lsof -i :80 |
7.列出与IP 地址192.168.1.100 建立连接的进程信息
1 | lsof [email protected] |
8.列出所有磁盘文件
1 | lsof -d |
9.列出指定文件系统类型的文件
1 | lsof -D /dev/sda1 |
10.递归列出目录下所有文件
1 | lsof +D /var/log/ |
扩展用法
1.使用 -R
选项递归列出所有子目录:
1 | lsof -R /home/user |
2.使用 -I
选项忽略指定的文件或目录:
1 | lsof -I '*.tmp' |
3.使用 -x
选项按列排列文件:
1 | lsof -x |
4.使用 -C
选项按行排列文件:
1 | lsof -C |
5.使用 -U
选项按文件访问时间排序:
1 | lsof -U |
6.使用 -k
选项按文件大小排序:
1 | lsof -k |
7.使用 -p
选项在文件名前添加指示文件类型的字符:
1 | lsof -p |
8.使用 -f
选项不进行排序:
1 | lsof -f |
9.使用 -T
选项以时间戳格式显示文件修改时间:
1 | lsof -T |
10.使用 -q
选项不输出任何信息,仅返回状态码:
1 | lsof -q |
11.使用 -b
选项显示文件大小的区块数:
1 | lsof -b |
12.使用 -G
选项显示文件的所属组:
1 | lsof -G |
13.使用 -o
选项自定义输出格式:
1 | lsof -o '%a %u %g %s %T@ %C@ %n' |
此外,lsof 命令还有一些扩展用法,例如:
- 使用
-X
选项按扩展名排序:
1 | lsof -X |
- 使用
-s
选项按文件大小排序:
1 | lsof -s |
高级用法
1.使用颜色区分文件类型:
1 | lsof --color=auto |
2.使用别名:
1 | alias ll='lsof -l' |
3.使用管道:
1 | lsof | grep 'pattern' | wc -l |
4.使用通配符:
1 | lsof *.txt |
5.使用正则表达式:
1 | lsof -l | grep '^-' | awk '{print $9}' | sort -u |
6.列出进程环境信息:列出进程ID为1234、GID为gid的进程打开的当前工作目录文件信息。
1 | lsof -a -p 1234 -g gid -d cwd |
7.列出进程内存映射信息
1 | lsof -a -p 1234 -d mem |
8.杀死指定进程
1 | kill -9 `lsof -t -u username -a -c process_name` |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 生活日志!
评论