news 2026/5/14 11:04:17

Linux ss命令比lsof命令快的原因剖析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Linux ss命令比lsof命令快的原因剖析

主要区别

1.lsof(慢的原因)

  • 遍历进程信息lsof需要遍历/proc文件系统下的所有进程目录,检查每个进程的文件描述符
  • 解析大量文件:需要读取/proc/[pid]/fd/*/proc/[pid]/maps等文件
  • 获取详细信息:为了显示进程名、用户等信息,需要读取更多进程元数据
  • 单进程运行:通常是单线程遍历所有进程

2.ss -tuln(快的原因)

  • 直接访问内核数据结构:通过 netlink 接口直接从内核获取 socket 信息
  • 批量获取:一次性获取所有网络连接信息,而不是逐个进程查询
  • 内核优化:网络栈在内核中是高度优化的数据结构
  • 只关注网络:专注于网络连接,不涉及其他文件类型

具体技术对比

# lsof 的工作流程(简化)1. 遍历 /proc/*/fd 目录2. 对每个进程,读取 fd 符号链接3. 解析 socket:[inode]格式4. 去其他数据结构匹配 inode5. 收集并格式化输出# ss 的工作流程(简化)1. 通过 netlink 发送查询请求2. 内核批量返回 socket 列表3. 直接格式化输出

性能对比数据

# 在典型系统上测试$timess -tuln>/dev/null real 0m0.008s $timelsof-i -n>/dev/null real 0m0.350s# 慢40倍以上!

使用场景建议

使用 ss

  • 仅需要查看网络连接时
  • 需要快速查看端口占用
  • 在脚本或自动化工具中使用
  • 需要实时监控网络状态

使用 lsof

  • 需要知道哪个进程占用了端口
  • 需要查看进程打开的所有文件(包括网络、普通文件、管道等)
  • 调试特定进程的资源使用情况
  • 需要更详细的信息(用户、进程名、命令行等)

实际例子

# 快速查看监听端口 - 用 ssss -tuln|grepLISTEN# 找出谁占用了80端口 - 用 lsof 更合适lsof-i:80# 或者用 ss + lsof 组合PORT=80ss -tulp|grep:$PORT# 或者直接用 ss 的 -p 选项(部分系统支持)ss -tulnp|grep:$PORT

总结

ss快是因为它走专用通道直接访问内核的网络数据结构,而lsof慢是因为它需要遍历整个进程空间并解析大量文件。如果你的需求只是查看网络连接状态,总是优先使用ss;如果需要进程级的详细信息,才使用lsof

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 15:59:47

django-flask基于python婚纱摄影预约管理系统pycharm -Vue

目录系统概述技术架构功能模块创新点部署与扩展关于博主开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!系统概述 基于Python的婚纱摄影预约管理系统采用Django和Flask双框架后端架构&#…

作者头像 李华
网站建设 2026/5/14 3:41:06

GESP认证C++编程真题解析 | B4259 [GESP202503 二级] 等差矩阵

​欢迎大家订阅我的专栏:算法题解:C与Python实现! 本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战! 专栏特色 1.经典算法练习:根据信息学竞赛大纲,精心挑选…

作者头像 李华
网站建设 2026/5/6 12:56:17

全网最全2026本科生AI论文写作软件TOP10:开题报告文献综述必备

全网最全2026本科生AI论文写作软件TOP10:开题报告文献综述必备 2026年本科生AI论文写作工具测评:为何需要这份榜单? 随着人工智能技术的不断进步,AI写作工具在学术领域的应用日益广泛。对于2026届的本科生而言,撰写开题…

作者头像 李华
网站建设 2026/5/12 23:41:56

VP引导定位软件-平移九点标定生产验证

VP引导定位软件-平移九点标定生产验证 一 生产TB 一 加载图像 private void materialButton19_Click(object sender, EventArgs e){OpenFileDialog openFileDialog new OpenFileDialog();if (openFileDialog.ShowDialog() DialogResult.OK){string filePath openFileDialog…

作者头像 李华
网站建设 2026/5/12 12:05:19

想学“黑客技术”?网络安全才是正确打开方式:核心构成、学习体系与新手误区详解

提及网络安全,很多人都是既熟悉又陌生,所谓的熟悉就是知道网络安全可以保障网络服务不中断。那么到底什么是网络安全?网络安全包括哪几个方面?通过下文为大家介绍一下。 一、什么是网络安全? 网络安全是指保护网络系统、硬件、软件以及其中的数据免…

作者头像 李华