Linux系统性能分析利器lsof
在 Linux 系统管理和开发中,命令行工具扮演着至关重要的角色。lsof
(List Open Files 的缩写)是一款强大的命令行工具,专用于列出当前系统中打开的文件及其相关进程。
由于 Linux 的一切皆文件的设计理念,lsof
可以显示包括网络连接、设备、目录、普通文件等在内的多种类型的打开文件,与系统的运行状态密切相关。因此,掌握 lsof
的使用,对于系统管理员和开发者来说都是一种必备的技能。
作用场景
lsof
主要用于以下几种场景:
- 系统监控:帮助系统管理员监控资源使用情况,发现哪些文件被哪些进程占用;
- 故障排查:应用程序发生异常时,使用
lsof
确定是哪些文件或端口导致了问题,进行针对性的处理;
- 网络分析:用于查看网络连接的状态,帮助开发者调试网络应用;
- 资源清理:在删除文件或设备之前,使用
lsof
确认它们是否仍在被使用,以避免潜在的系统错误;
常用示例
以下是一些常见的 lsof
命令及其示例
1. 获取网络信息
1 2 3 4
| $ lsof -i TCP
$ lsof -i UDP
|
1
| $ lsof -i TCP:60000-65000
|
1 2 3
| $ lsof -i -s TCP:LISTEN
$ lsof -i -s TCP:ESTABLISHED
|
2. 获取用户信息
1 2 3 4
| $ lsof -u root
$ lsof -u ^root
|
如果想知道这个用户打开了哪些 TCP
连接,可以使用下边的命令
1
| $ lsof -a -u root -i TCP
|
-a
选项可以使多个条件变成”与”的关系
3. 文件和目录
1 2 3 4
| $ lsof /var/log/message
$ lsof +D /var/log/
|
4. 高级用法
杀掉某个用户打开了文件的所有进程
1
| $ kill -9 $(lsof -t -u linux)
|
常用选项
-i
输出与网络相关的文件
-P
不解析端口号;
-n
不解析主机名;
-r
重复间隔 N 秒;
-a
选项之间为 与 的关系
-d
打开指定文件描述符的进程
+d
打开目录下的文件或目录的进程
+D
打开目录下的文件或目录的进程(递归)
-t
只输出 PID
-u
指定用户打开的文件
-U
输出打开 Unix 域套接字文件
写在最后
通过熟练使用这些选项,用户可以更高效地管理系统资源,优化程序性能以及快速排查故障。总之,lsof
作为 Linux 系统的核心工具之一,在日常工作中极为重要,掌握它将为你的系统管理技能增添不小的助力。
上一篇 « 使用knot搭建DNS域名服务