Linux系统性能分析利器lsof 
        
        
        
        
        
        
        在 Linux 系统管理和开发中,命令行工具扮演着至关重要的角色。lsof(List Open Files 的缩写)是一款强大的命令行工具,专用于列出当前系统中打开的文件及其相关进程。
由于 Linux 的一切皆文件的设计理念,lsof 可以显示包括网络连接、设备、目录、普通文件等在内的多种类型的打开文件,与系统的运行状态密切相关。因此,掌握 lsof 的使用,对于系统管理员和开发者来说都是一种必备的技能。
作用场景
lsof 主要用于以下几种场景:
- 系统监控:帮助系统管理员监控资源使用情况,发现哪些文件被哪些进程占用;
- 故障排查:应用程序发生异常时,使用 lsof确定是哪些文件或端口导致了问题,进行针对性的处理;
- 网络分析:用于查看网络连接的状态,帮助开发者调试网络应用;
- 资源清理:在删除文件或设备之前,使用 lsof确认它们是否仍在被使用,以避免潜在的系统错误;
常用示例
以下是一些常见的 lsof 命令及其示例
1. 获取网络信息
| 12
 3
 4
 
 | $ lsof -i TCP
 
 $ lsof -i UDP
 
 | 
| 1
 | $ lsof -i TCP:60000-65000
 | 
| 12
 3
 
 | $ lsof -i -s TCP:LISTEN
 $ lsof -i -s TCP:ESTABLISHED
 
 | 
2. 获取用户信息
| 12
 3
 4
 
 | $ lsof -u root
 
 $ lsof -u ^root
 
 | 
如果想知道这个用户打开了哪些 TCP 连接,可以使用下边的命令
| 1
 | $ lsof -a -u root -i TCP
 | 
-a 选项可以使多个条件变成”与”的关系
3. 文件和目录
| 12
 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 系统的核心工具之一,在日常工作中极为重要,掌握它将为你的系统管理技能增添不小的助力。
        
        
        
        
        
    
    上一篇 « 一定要了解的tcpdump实用技巧
    
    
    下一篇 » 一定要了解的iptables实用技巧