沙滩星空的博客沙滩星空的博客

Linux查看打开中的文件:lsof命令总结

lsof简介

lsof 是系统管理/安全的工具。经常用来获取与 网络连接 相关的信息,但这只是它众多强大功能中的一个,因为它是指 列出打开文件(lists openfiles)。而有一点要切记,在 Unix 中一切(包括网络套接口)都是文件。

lsof 有非常多的选项参数,你可以用它获取系统设备信息,能通过它了解指定用户在指定地点正在碰什么东西,或者甚至是一个进程正在使用什么文件或网络连接。

对于我,lsof 替代了 netstatps 的大部分工作。它可以带来那些工具所能带来的一切,而且要比那些工具多得多。

获取网络连接信息

有些人喜欢用 netstat 来获取网络连接,但是我更喜欢使用 lsof 来进行此项工作。结果以对我来说很直观的方式呈现,我仅仅只需改变我的语法,就可以通过同样的命令来获取更多信息。

# 使用-i显示所有连接
lsof -i

# 在-i后提供对应的协议来仅仅显示TCP或者UDP连接信息。
lsof -iTCP

# -i:port来显示与指定端口相关的网络信息
lsof -i :22

# 使用@host来显示指定到指定主机的连接
lsof -i@172.16.12.5

# 使用@host:port显示基于主机与端口的连接
lsof -i@172.16.12.5:22

# 找出本机正在监听的端口
lsof -i -sTCP:LISTEN
lsof -i | grep -i LISTEN

# 找出已建立的连接
lsof -i -sTCP:ESTABLISHED
lsof -i | grep -i ESTABLISHED

用户信息

你也可以获取各种用户的信息,以及它们在系统上正干着的事情,包括它们的网络活动、对文件的操作等。

# 使用-u显示指定用户打开了什么
lsof -u daniel

# 排除指定用户
lsof -u ^daniel

# 杀死指定用户所做的一切事情
kill -9 `lsof -t -u daniel`

命令和进程

# 使用-c查看指定的命令正在使用的文件和网络连接
lsof -c syslog-ng

# 使用-p查看指定进程ID已打开的内容
lsof -p 10075

# -c与-t选项合用,只返回指定命令的PID
lsof -t -c Mail

文件与目录

# 通过查看指定文件或目录,你可以看到系统上所有正与其交互的资源——包括用户、进程等。
lsof /var/log/messages/
lsof /home/daniel/firewall_whitelist.txt

高级用法

# 显示daniel连接到1.1.1.1所做的一切
lsof -u daniel -i @1.1.1.1

要查看完整参考,可运行 man lsof 命令,或查看 在线版本

Linux 命令神器:lsof 入门 https://linux.cn/article-4099-1.html
lsof — Linux manual page https://www.netadmintools.com/html/lsof.man.html
未经允许不得转载:沙滩星空的博客 » Linux查看打开中的文件:lsof命令总结

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址