IH522ENK01 3BSE019202R1操作员键盘
2026/1/16 15:11:00
lsof需要遍历/proc文件系统下的所有进程目录,检查每个进程的文件描述符/proc/[pid]/fd/*、/proc/[pid]/maps等文件# 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:$PORTss快是因为它走专用通道直接访问内核的网络数据结构,而lsof慢是因为它需要遍历整个进程空间并解析大量文件。如果你的需求只是查看网络连接状态,总是优先使用ss;如果需要进程级的详细信息,才使用lsof。