当前位置:首页 > 技术 > 正文内容

Linux lsof命令详解:系统文件与网络连接监控

访客 技术 2026年9月18日 8

lsof(List Open Files)是一个功能强大的系统工具,用于列出当前系统中被进程打开的文件。在类Unix系统中,包括网络套接字在内的所有资源都被视为文件,因此该命令能提供极为全面的系统活动视图。

lsof支持大量选项,其基本命令格式如下:

usage: [-?abhlnNoOPRstUvV] [+|-c c] [+|-d s] [+D D] [+|-f[cgG]]
[-F [f]] [-g [s]] [-i [i]] [+|-L [l]] [+|-M] [-o [o]]
[-p s] [+|-r [t]] [-S [t]] [-T [t]] [-u s] [+|-w] [-x [fl]] [--] [names]

核心参数说明

  • 无参数:默认列出所有活跃进程打开的文件。
  • -a:将后续选项的结果进行"与"运算(默认为"或"运算)。
  • -l:输出中显示用户ID而非用户名。
  • -t:仅输出进程ID。
  • -U:列出UNIX域套接字。
  • -F:指定输出格式,便于其他程序解析。

网络连接监控

lsof常用于分析系统的网络活动,语法为:lsof -i[46] [protocol][@hostname|hostaddr][:service|port]。

查看所有网络连接

lsof -i

示例输出:

COMMAND  PID USER   FD   TYPE DEVICE SIZE NODE NAME
dhcpcd   6061 root   4u   IPv4  4510 UDP *:bootpc
sshd     7703 root   3u   IPv6  6499 TCP *:ssh  (LISTEN)

查看指定协议或端口的连接

  • 仅显示IPv6连接:lsof -i 6
  • 仅显示TCP连接:lsof -iTCP
  • 查看占用22端口的进程:lsof -i:22

基于主机过滤连接

  • 查看与特定主机的连接:lsof -i@192.168.1.100
  • 查看主机特定端口的连接:lsof -i@192.168.1.100:80

连接状态过滤

  • 列出监听端口:lsof -i -sTCP:LISTEN 或 lsof -i | grep -i LISTEN
  • 列出已建立的连接:lsof -i -sTCP:ESTABLISHED 或 lsof -i | grep -i ESTABLISHED

用户与进程信息

按用户查看

  • 查看用户打开的文件:lsof -u username
  • 查看除指定用户外的其他用户活动:lsof -u ^username
  • 终止用户的所有进程:kill -9 $(lsof -t -u username)

按命令或进程查看

  • 查看命令使用的资源:lsof -c process_name
  • 查看指定PID打开的文件:lsof -p 1234
  • 仅获取进程ID:lsof -t -c sshd

文件与目录监控

  • 查看与目录交互的进程:lsof /var/log/
  • 查看与特定文件交互的进程:lsof /path/to/file

高级应用示例

  • 组合查询(用户与网络):lsof -u user1 -i @10.0.0.1
  • 向进程发送信号:kill -HUP $(lsof -t -c nginx)
  • 查找链接数为0的文件(可能被隐藏):lsof +L1
  • 查看端口范围的连接:lsof -i @hostname:1000-2000
标签: Linux

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

Laravel 事件和监听器创建

在 Laravel 中,使用 Artisan 命令创建 Events(事件) 和 Listeners(监听器) 是非常高效的。你可以通过以下几种方式来实现:1. 手动创建单个 Event如果你只想创建一个事件类,可以使用 make:event 命令:Bashphp artisan make:event UserRegistered执行后,文件将生成在 app/Even...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。